blob: ba47705101585d1249b2f41fb9a1481dfef56bd6 [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} } },
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +0530649 /* MULTIMEDIA28 */
650 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
651 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
652 /* MULTIMEDIA29 */
653 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
654 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530655 /* VOIP */
656 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
657 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
658 /* AFE_RX */
659 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
660 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
661 /* AFE_TX */
662 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
663 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
664 /* VOICE_STUB */
665 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
666 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530667 /* DTMF_RX */
668 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
669 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530670 /* QCHAT */
671 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
672 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
673 /* VOLTE_STUB */
674 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
675 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
676 /* LSM1 */
677 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
678 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
679 /* LSM2 */
680 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
681 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
682 /* LSM3 */
683 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
684 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
685 /* LSM4 */
686 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
687 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
688 /* LSM5 */
689 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
690 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
691 /* LSM6 */
692 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
693 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
694 /* LSM7 */
695 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
696 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
697 /* LSM8 */
698 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
699 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
700 /* VOICE2_STUB */
701 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
702 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530703 /* VOICEMMODE1 */
704 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
705 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
706 /* VOICEMMODE2 */
707 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
708 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
709};
710
711static unsigned long session_copp_map[MSM_FRONTEND_DAI_MAX][2]
712 [MSM_BACKEND_DAI_MAX];
713static struct msm_pcm_routing_app_type_data app_type_cfg[MAX_APP_TYPES];
714static struct msm_pcm_routing_app_type_data lsm_app_type_cfg[MAX_APP_TYPES];
715static struct msm_pcm_stream_app_type_cfg
716 fe_dai_app_type_cfg[MSM_FRONTEND_DAI_MAX][2][MSM_BACKEND_DAI_MAX];
717
718static int last_be_id_configured[MSM_FRONTEND_DAI_MAX][MAX_SESSION_TYPES];
719
720/* The caller of this should aqcuire routing lock */
721void msm_pcm_routing_get_bedai_info(int be_idx,
722 struct msm_pcm_routing_bdai_data *be_dai)
723{
724 if (be_idx >= 0 && be_idx < MSM_BACKEND_DAI_MAX)
725 memcpy(be_dai, &msm_bedais[be_idx],
726 sizeof(struct msm_pcm_routing_bdai_data));
727}
728
729/* The caller of this should aqcuire routing lock */
730void msm_pcm_routing_get_fedai_info(int fe_idx, int sess_type,
731 struct msm_pcm_routing_fdai_data *fe_dai)
732{
733 if ((sess_type == SESSION_TYPE_TX) || (sess_type == SESSION_TYPE_RX))
734 memcpy(fe_dai, &fe_dai_map[fe_idx][sess_type],
735 sizeof(struct msm_pcm_routing_fdai_data));
736}
737
738void msm_pcm_routing_acquire_lock(void)
739{
740 mutex_lock(&routing_lock);
741}
742
743void msm_pcm_routing_release_lock(void)
744{
745 mutex_unlock(&routing_lock);
746}
747
748static int msm_pcm_routing_get_app_type_idx(int app_type)
749{
750 int idx;
751
752 pr_debug("%s: app_type: %d\n", __func__, app_type);
753 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
754 if (app_type_cfg[idx].app_type == app_type)
755 return idx;
756 }
757 pr_info("%s: App type not available, fallback to default\n", __func__);
758 return 0;
759}
760
761static int msm_pcm_routing_get_lsm_app_type_idx(int app_type)
762{
763 int idx;
764
765 pr_debug("%s: app_type: %d\n", __func__, app_type);
766 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
767 if (lsm_app_type_cfg[idx].app_type == app_type)
768 return idx;
769 }
770 pr_debug("%s: App type not available, fallback to default\n", __func__);
771 return 0;
772}
773
774static bool is_mm_lsm_fe_id(int fe_id)
775{
776 bool rc = true;
777
778 if (fe_id > MSM_FRONTEND_DAI_MM_MAX_ID &&
779 ((fe_id < MSM_FRONTEND_DAI_LSM1) ||
780 (fe_id > MSM_FRONTEND_DAI_LSM8))) {
781 rc = false;
782 }
783 return rc;
784}
785
786int msm_pcm_routing_reg_stream_app_type_cfg(
787 int fedai_id, int session_type, int be_id,
788 struct msm_pcm_stream_app_type_cfg *cfg_data)
789{
790 int ret = 0;
791
792 if (cfg_data == NULL) {
793 pr_err("%s: Received NULL pointer for cfg_data\n", __func__);
794 ret = -EINVAL;
795 goto done;
796 }
797
798 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
799 __func__, fedai_id, session_type, be_id,
800 cfg_data->app_type, cfg_data->acdb_dev_id,
801 cfg_data->sample_rate);
802
803 if (!is_mm_lsm_fe_id(fedai_id)) {
804 pr_err("%s: Invalid machine driver ID %d\n",
805 __func__, fedai_id);
806 ret = -EINVAL;
807 goto done;
808 }
809 if (session_type != SESSION_TYPE_RX &&
810 session_type != SESSION_TYPE_TX) {
811 pr_err("%s: Invalid session type %d\n",
812 __func__, session_type);
813 ret = -EINVAL;
814 goto done;
815 }
816 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
817 pr_err("%s: Received out of bounds be_id %d\n",
818 __func__, be_id);
819 ret = -EINVAL;
820 goto done;
821 }
822
823 fe_dai_app_type_cfg[fedai_id][session_type][be_id] = *cfg_data;
824
825 /*
826 * Store the BE ID of the configuration information set as the latest so
827 * the get mixer control knows what to return.
828 */
829 last_be_id_configured[fedai_id][session_type] = be_id;
830
831done:
832 return ret;
833}
834EXPORT_SYMBOL(msm_pcm_routing_reg_stream_app_type_cfg);
835
836/**
837 * msm_pcm_routing_get_stream_app_type_cfg
838 *
839 * Receives fedai_id, session_type, be_id, and populates app_type,
840 * acdb_dev_id, & sample rate. Returns 0 on success. On failure returns
841 * -EINVAL and does not alter passed values.
842 *
843 * fedai_id - Passed value, front end ID for which app type config is wanted
844 * session_type - Passed value, session type for which app type config
845 * is wanted
846 * be_id - Returned value, back end device id the app type config data is for
847 * cfg_data - Returned value, configuration data used by app type config
848 */
849int msm_pcm_routing_get_stream_app_type_cfg(
850 int fedai_id, int session_type, int *bedai_id,
851 struct msm_pcm_stream_app_type_cfg *cfg_data)
852{
853 int be_id;
854 int ret = 0;
855
856 if (bedai_id == NULL) {
857 pr_err("%s: Received NULL pointer for backend ID\n", __func__);
858 ret = -EINVAL;
859 goto done;
860 } else if (cfg_data == NULL) {
861 pr_err("%s: NULL pointer sent for cfg_data\n", __func__);
862 ret = -EINVAL;
863 goto done;
864 } else if (!is_mm_lsm_fe_id(fedai_id)) {
865 pr_err("%s: Invalid FE ID %d\n", __func__, fedai_id);
866 ret = -EINVAL;
867 goto done;
868 } else if (session_type != SESSION_TYPE_RX &&
869 session_type != SESSION_TYPE_TX) {
870 pr_err("%s: Invalid session type %d\n", __func__, session_type);
871 ret = -EINVAL;
872 goto done;
873 }
874
875 be_id = last_be_id_configured[fedai_id][session_type];
876 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
877 pr_err("%s: Invalid BE ID %d\n", __func__, be_id);
878 ret = -EINVAL;
879 goto done;
880 }
881
882 *bedai_id = be_id;
883 *cfg_data = fe_dai_app_type_cfg[fedai_id][session_type][be_id];
884 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
885 __func__, fedai_id, session_type, *bedai_id,
886 cfg_data->app_type, cfg_data->acdb_dev_id,
887 cfg_data->sample_rate);
888done:
889 return ret;
890}
891EXPORT_SYMBOL(msm_pcm_routing_get_stream_app_type_cfg);
892
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530893static struct cal_block_data *msm_routing_find_topology_by_path(int path,
894 int cal_index)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530895{
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530896 struct list_head *ptr, *next;
897 struct cal_block_data *cal_block = NULL;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530898 pr_debug("%s\n", __func__);
899
900 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530901 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530902
903 cal_block = list_entry(ptr,
904 struct cal_block_data, list);
905
Vikram Panduranga770b8382017-09-27 12:17:36 -0700906 if (cal_utils_is_cal_stale(cal_block))
907 continue;
908
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530909 if (((struct audio_cal_info_adm_top *)cal_block
910 ->cal_info)->path == path) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530911 return cal_block;
912 }
913 }
914 pr_debug("%s: Can't find topology for path %d\n", __func__, path);
915 return NULL;
916}
917
918static struct cal_block_data *msm_routing_find_topology(int path,
919 int app_type,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530920 int acdb_id,
921 int cal_index)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530922{
923 struct list_head *ptr, *next;
924 struct cal_block_data *cal_block = NULL;
925 struct audio_cal_info_adm_top *cal_info;
926
927 pr_debug("%s\n", __func__);
928
929 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530930 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530931
932 cal_block = list_entry(ptr,
933 struct cal_block_data, list);
934
Vikram Panduranga770b8382017-09-27 12:17:36 -0700935 if (cal_utils_is_cal_stale(cal_block))
936 continue;
937
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530938 cal_info = (struct audio_cal_info_adm_top *)
939 cal_block->cal_info;
940 if ((cal_info->path == path) &&
941 (cal_info->app_type == app_type) &&
942 (cal_info->acdb_id == acdb_id)) {
943 return cal_block;
944 }
945 }
946 pr_debug("%s: Can't find topology for path %d, app %d, acdb_id %d defaulting to search by path\n",
947 __func__, path, app_type, acdb_id);
Vikram Panduranga770b8382017-09-27 12:17:36 -0700948 return msm_routing_find_topology_by_path(path, cal_index);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530949}
950
Vikram Panduranga770b8382017-09-27 12:17:36 -0700951/*
952 * Retrieving cal_block will mark cal_block as stale.
953 * Hence it cannot be reused or resent unless the flag
954 * is reset.
955 */
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530956static int msm_routing_get_adm_topology(int fedai_id, int session_type,
957 int be_id)
958{
959 int topology = NULL_COPP_TOPOLOGY;
960 struct cal_block_data *cal_block = NULL;
961 int app_type = 0, acdb_dev_id = 0;
962
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530963 pr_debug("%s: fedai_id %d, session_type %d, be_id %d\n",
964 __func__, fedai_id, session_type, be_id);
965
966 if (cal_data == NULL)
967 goto done;
968
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530969 app_type = fe_dai_app_type_cfg[fedai_id][session_type][be_id].app_type;
970 acdb_dev_id =
971 fe_dai_app_type_cfg[fedai_id][session_type][be_id].acdb_dev_id;
972
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530973 mutex_lock(&cal_data[ADM_TOPOLOGY_CAL_TYPE_IDX]->lock);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530974 cal_block = msm_routing_find_topology(session_type, app_type,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530975 acdb_dev_id,
976 ADM_TOPOLOGY_CAL_TYPE_IDX);
Vikram Panduranga770b8382017-09-27 12:17:36 -0700977 if (cal_block != NULL) {
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530978 topology = ((struct audio_cal_info_adm_top *)
979 cal_block->cal_info)->topology;
Vikram Panduranga770b8382017-09-27 12:17:36 -0700980 cal_utils_mark_cal_used(cal_block);
981 mutex_unlock(&cal_data[ADM_TOPOLOGY_CAL_TYPE_IDX]->lock);
982 } else {
983 mutex_unlock(&cal_data[ADM_TOPOLOGY_CAL_TYPE_IDX]->lock);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530984
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530985 pr_debug("%s: Check for LSM topology\n", __func__);
986 mutex_lock(&cal_data[ADM_LSM_TOPOLOGY_CAL_TYPE_IDX]->lock);
987 cal_block = msm_routing_find_topology(session_type, app_type,
988 acdb_dev_id,
989 ADM_LSM_TOPOLOGY_CAL_TYPE_IDX);
Vikram Panduranga770b8382017-09-27 12:17:36 -0700990 if (cal_block != NULL) {
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530991 topology = ((struct audio_cal_info_adm_top *)
992 cal_block->cal_info)->topology;
Vikram Panduranga770b8382017-09-27 12:17:36 -0700993 cal_utils_mark_cal_used(cal_block);
994 }
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530995 mutex_unlock(&cal_data[ADM_LSM_TOPOLOGY_CAL_TYPE_IDX]->lock);
996 }
997
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530998done:
999 pr_debug("%s: Using topology %d\n", __func__, topology);
1000 return topology;
1001}
1002
1003static uint8_t is_be_dai_extproc(int be_dai)
1004{
1005 if (be_dai == MSM_BACKEND_DAI_EXTPROC_RX ||
1006 be_dai == MSM_BACKEND_DAI_EXTPROC_TX ||
1007 be_dai == MSM_BACKEND_DAI_EXTPROC_EC_TX)
1008 return 1;
1009 else
1010 return 0;
1011}
1012
1013static void msm_pcm_routing_build_matrix(int fedai_id, int sess_type,
1014 int path_type, int perf_mode,
1015 uint32_t passthr_mode)
1016{
1017 int i, port_type, j, num_copps = 0;
1018 struct route_payload payload;
1019
1020 port_type = ((path_type == ADM_PATH_PLAYBACK ||
1021 path_type == ADM_PATH_COMPRESSED_RX) ?
1022 MSM_AFE_PORT_TYPE_RX : MSM_AFE_PORT_TYPE_TX);
1023
1024 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1025 if (!is_be_dai_extproc(i) &&
1026 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1027 (msm_bedais[i].active) &&
1028 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1029 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1030 unsigned long copp =
1031 session_copp_map[fedai_id][sess_type][i];
1032 if (test_bit(j, &copp)) {
1033 payload.port_id[num_copps] =
1034 msm_bedais[i].port_id;
1035 payload.copp_idx[num_copps] = j;
1036 payload.app_type[num_copps] =
1037 fe_dai_app_type_cfg
1038 [fedai_id][sess_type][i]
1039 .app_type;
1040 payload.acdb_dev_id[num_copps] =
1041 fe_dai_app_type_cfg
1042 [fedai_id][sess_type][i]
1043 .acdb_dev_id;
1044 payload.sample_rate[num_copps] =
1045 fe_dai_app_type_cfg
1046 [fedai_id][sess_type][i]
1047 .sample_rate;
1048 num_copps++;
1049 }
1050 }
1051 }
1052 }
1053
1054 if (num_copps) {
1055 payload.num_copps = num_copps;
1056 payload.session_id = fe_dai_map[fedai_id][sess_type].strm_id;
1057 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1058 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1059 }
1060}
1061
1062void msm_pcm_routing_reg_psthr_stream(int fedai_id, int dspst_id,
1063 int stream_type)
1064{
1065 int i, session_type, path_type, port_type;
1066 u32 mode = 0;
1067
1068 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1069 /* bad ID assigned in machine driver */
1070 pr_err("%s: bad MM ID\n", __func__);
1071 return;
1072 }
1073
1074 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1075 session_type = SESSION_TYPE_RX;
1076 path_type = ADM_PATH_PLAYBACK;
1077 port_type = MSM_AFE_PORT_TYPE_RX;
1078 } else {
1079 session_type = SESSION_TYPE_TX;
1080 path_type = ADM_PATH_LIVE_REC;
1081 port_type = MSM_AFE_PORT_TYPE_TX;
1082 }
1083
1084 mutex_lock(&routing_lock);
1085
1086 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1087 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1088 if (!is_be_dai_extproc(i) &&
1089 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1090 (msm_bedais[i].active) &&
1091 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1092 mode = afe_get_port_type(msm_bedais[i].port_id);
1093 adm_connect_afe_port(mode, dspst_id,
1094 msm_bedais[i].port_id);
1095 break;
1096 }
1097 }
1098 mutex_unlock(&routing_lock);
1099}
1100
1101static bool route_check_fe_id_adm_support(int fe_id)
1102{
1103 bool rc = true;
1104
1105 if ((fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1106 (fe_id <= MSM_FRONTEND_DAI_LSM8)) {
1107 /* fe id is listen while port is set to afe */
1108 if (lsm_port_index != ADM_LSM_PORT_INDEX) {
1109 pr_debug("%s: fe_id %d, lsm mux slim port %d\n",
1110 __func__, fe_id, lsm_port_index);
1111 rc = false;
1112 }
1113 }
1114
1115 return rc;
1116}
1117
1118int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode,
1119 int dspst_id, int stream_type,
1120 uint32_t passthr_mode)
1121{
1122 int i, j, session_type, path_type, port_type, topology;
1123 int num_copps = 0;
1124 struct route_payload payload;
1125 u32 channels, sample_rate;
1126 u16 bit_width = 16;
1127 bool is_lsm;
1128
1129 pr_debug("%s:fe_id[%d] perf_mode[%d] id[%d] stream_type[%d] passt[%d]",
1130 __func__, fe_id, perf_mode, dspst_id,
1131 stream_type, passthr_mode);
1132 if (!is_mm_lsm_fe_id(fe_id)) {
1133 /* bad ID assigned in machine driver */
1134 pr_err("%s: bad MM ID %d\n", __func__, fe_id);
1135 return -EINVAL;
1136 }
1137
1138 if (!route_check_fe_id_adm_support(fe_id)) {
1139 /* ignore adm open if not supported for fe_id */
1140 pr_debug("%s: No ADM support for fe id %d\n", __func__, fe_id);
1141 return 0;
1142 }
1143
1144 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1145 session_type = SESSION_TYPE_RX;
1146 if (passthr_mode != LEGACY_PCM)
1147 path_type = ADM_PATH_COMPRESSED_RX;
1148 else
1149 path_type = ADM_PATH_PLAYBACK;
1150 port_type = MSM_AFE_PORT_TYPE_RX;
1151 } else if (stream_type == SNDRV_PCM_STREAM_CAPTURE) {
1152 session_type = SESSION_TYPE_TX;
Laxminath Kasam38070be2017-08-17 18:21:59 +05301153 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301154 path_type = ADM_PATH_COMPRESSED_TX;
1155 else
1156 path_type = ADM_PATH_LIVE_REC;
1157 port_type = MSM_AFE_PORT_TYPE_TX;
1158 } else {
1159 pr_err("%s: invalid stream type %d\n", __func__, stream_type);
1160 return -EINVAL;
1161 }
1162
1163 is_lsm = (fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1164 (fe_id <= MSM_FRONTEND_DAI_LSM8);
1165 mutex_lock(&routing_lock);
1166
1167 payload.num_copps = 0; /* only RX needs to use payload */
1168 fe_dai_map[fe_id][session_type].strm_id = dspst_id;
1169 /* re-enable EQ if active */
1170 msm_qti_pp_send_eq_values(fe_id);
1171 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1172 if (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))
1173 msm_bedais[i].passthr_mode[fe_id] = passthr_mode;
1174
1175 if (!is_be_dai_extproc(i) &&
1176 (afe_get_port_type(msm_bedais[i].port_id) ==
1177 port_type) &&
1178 (msm_bedais[i].active) &&
1179 (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))) {
1180 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1181
1182 /*
1183 * check if ADM needs to be configured with different
1184 * channel mapping than backend
1185 */
1186 if (!msm_bedais[i].adm_override_ch)
1187 channels = msm_bedais[i].channel;
1188 else
1189 channels = msm_bedais[i].adm_override_ch;
1190
1191 bit_width = msm_routing_get_bit_width(
1192 msm_bedais[i].format);
1193 app_type =
1194 fe_dai_app_type_cfg[fe_id][session_type][i].app_type;
1195 if (app_type && is_lsm) {
1196 app_type_idx =
1197 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1198 sample_rate =
1199 fe_dai_app_type_cfg[fe_id][session_type][i]
1200 .sample_rate;
1201 bit_width =
1202 lsm_app_type_cfg[app_type_idx].bit_width;
1203 } else if (app_type) {
1204 app_type_idx =
1205 msm_pcm_routing_get_app_type_idx(
1206 app_type);
1207 sample_rate =
1208 fe_dai_app_type_cfg[fe_id][session_type][i].sample_rate;
1209 bit_width =
1210 app_type_cfg[app_type_idx].bit_width;
1211 } else {
1212 sample_rate = msm_bedais[i].sample_rate;
1213 }
1214 acdb_dev_id =
1215 fe_dai_app_type_cfg[fe_id][session_type][i].acdb_dev_id;
1216 topology = msm_routing_get_adm_topology(fe_id,
1217 session_type,
1218 i);
1219 if ((passthr_mode == COMPRESSED_PASSTHROUGH_DSD)
1220 || (passthr_mode ==
1221 COMPRESSED_PASSTHROUGH_GEN))
1222 topology = COMPRESSED_PASSTHROUGH_NONE_TOPOLOGY;
1223 pr_debug("%s: Before adm open topology %d\n", __func__,
1224 topology);
1225
1226 copp_idx =
1227 adm_open(msm_bedais[i].port_id,
1228 path_type, sample_rate, channels,
1229 topology, perf_mode, bit_width,
1230 app_type, acdb_dev_id);
1231 if ((copp_idx < 0) ||
1232 (copp_idx >= MAX_COPPS_PER_PORT)) {
1233 pr_err("%s:adm open failed coppid:%d\n",
1234 __func__, copp_idx);
1235 mutex_unlock(&routing_lock);
1236 return -EINVAL;
1237 }
1238 pr_debug("%s: set idx bit of fe:%d, type: %d, be:%d\n",
1239 __func__, fe_id, session_type, i);
1240 set_bit(copp_idx,
1241 &session_copp_map[fe_id][session_type][i]);
1242
1243 if (msm_is_resample_needed(
1244 sample_rate,
1245 msm_bedais[i].sample_rate))
1246 adm_copp_mfc_cfg(
1247 msm_bedais[i].port_id, copp_idx,
1248 msm_bedais[i].sample_rate);
1249
1250 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1251 unsigned long copp =
1252 session_copp_map[fe_id][session_type][i];
1253 if (test_bit(j, &copp)) {
1254 payload.port_id[num_copps] =
1255 msm_bedais[i].port_id;
1256 payload.copp_idx[num_copps] = j;
1257 payload.app_type[num_copps] =
1258 fe_dai_app_type_cfg
1259 [fe_id][session_type][i]
1260 .app_type;
1261 payload.acdb_dev_id[num_copps] =
1262 fe_dai_app_type_cfg
1263 [fe_id][session_type][i]
1264 .acdb_dev_id;
1265 payload.sample_rate[num_copps] =
1266 fe_dai_app_type_cfg
1267 [fe_id][session_type][i]
1268 .sample_rate;
1269 num_copps++;
1270 }
1271 }
1272 if (passthr_mode != COMPRESSED_PASSTHROUGH_DSD
1273 && passthr_mode !=
1274 COMPRESSED_PASSTHROUGH_GEN) {
1275 msm_routing_send_device_pp_params(
1276 msm_bedais[i].port_id,
1277 copp_idx, fe_id);
1278 }
1279 }
1280 }
1281 if (num_copps) {
1282 payload.num_copps = num_copps;
1283 payload.session_id = fe_dai_map[fe_id][session_type].strm_id;
1284 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1285 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1286 }
1287 mutex_unlock(&routing_lock);
1288 return 0;
1289}
1290
1291static u32 msm_pcm_routing_get_voc_sessionid(u16 val)
1292{
1293 u32 session_id;
1294
1295 switch (val) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301296 case MSM_FRONTEND_DAI_QCHAT:
1297 session_id = voc_get_session_id(QCHAT_SESSION_NAME);
1298 break;
1299 case MSM_FRONTEND_DAI_VOIP:
1300 session_id = voc_get_session_id(VOIP_SESSION_NAME);
1301 break;
1302 case MSM_FRONTEND_DAI_VOICEMMODE1:
1303 session_id = voc_get_session_id(VOICEMMODE1_NAME);
1304 break;
1305 case MSM_FRONTEND_DAI_VOICEMMODE2:
1306 session_id = voc_get_session_id(VOICEMMODE2_NAME);
1307 break;
1308 default:
1309 session_id = 0;
1310 }
1311
1312 pr_debug("%s session_id 0x%x", __func__, session_id);
1313 return session_id;
1314}
1315
1316static int msm_pcm_routing_channel_mixer(int fe_id, bool perf_mode,
1317 int dspst_id, int stream_type)
1318{
1319 int copp_idx = 0;
1320 int sess_type = 0;
1321 int i = 0, j = 0, be_id;
1322 int ret = 0;
1323
1324 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
1325 pr_err("%s: invalid FE %d\n", __func__, fe_id);
1326 return 0;
1327 }
1328
1329 if (!(channel_mixer[fe_id].enable)) {
1330 pr_debug("%s: channel mixer not enabled for FE %d\n",
1331 __func__, fe_id);
1332 return 0;
1333 }
1334
1335 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1336 sess_type = SESSION_TYPE_RX;
1337 else
1338 sess_type = SESSION_TYPE_TX;
1339
1340 for (i = 0; i < ADM_MAX_CHANNELS && channel_input[fe_id][i] > 0;
1341 ++i) {
1342 be_id = channel_input[fe_id][i] - 1;
1343 channel_mixer[fe_id].input_channels[i] =
1344 msm_bedais[be_id].channel;
1345
1346 if ((msm_bedais[be_id].active) &&
1347 test_bit(fe_id,
1348 &msm_bedais[be_id].fe_sessions[0])) {
1349 unsigned long copp =
1350 session_copp_map[fe_id][sess_type][be_id];
1351 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1352 if (test_bit(j, &copp)) {
1353 copp_idx = j;
1354 break;
1355 }
1356 }
1357
1358 pr_debug("%s: fe %d, be %d, channel %d, copp %d\n",
1359 __func__,
1360 fe_id, be_id, msm_bedais[be_id].channel,
1361 copp_idx);
1362 ret = adm_programable_channel_mixer(
1363 msm_bedais[be_id].port_id,
1364 copp_idx, dspst_id, sess_type,
1365 channel_mixer + fe_id, i);
1366 }
1367 }
1368
1369 return ret;
1370}
1371
1372int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
1373 int dspst_id, int stream_type)
1374{
1375 int i, j, session_type, path_type, port_type, topology, num_copps = 0;
1376 struct route_payload payload;
1377 u32 channels, sample_rate;
1378 uint16_t bits_per_sample = 16;
1379 uint32_t passthr_mode = LEGACY_PCM;
1380 int ret = 0;
1381
1382 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1383 /* bad ID assigned in machine driver */
1384 pr_err("%s: bad MM ID %d\n", __func__, fedai_id);
1385 return -EINVAL;
1386 }
1387
1388 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1389 session_type = SESSION_TYPE_RX;
1390 path_type = ADM_PATH_PLAYBACK;
1391 port_type = MSM_AFE_PORT_TYPE_RX;
1392 } else {
1393 session_type = SESSION_TYPE_TX;
1394 path_type = ADM_PATH_LIVE_REC;
1395 port_type = MSM_AFE_PORT_TYPE_TX;
1396 }
1397
1398 mutex_lock(&routing_lock);
1399
1400 payload.num_copps = 0; /* only RX needs to use payload */
1401 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1402 fe_dai_map[fedai_id][session_type].perf_mode = perf_mode;
1403
1404 /* re-enable EQ if active */
1405 msm_qti_pp_send_eq_values(fedai_id);
1406 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1407 if (!is_be_dai_extproc(i) &&
1408 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1409 (msm_bedais[i].active) &&
1410 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1411 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1412 /*
1413 * check if ADM needs to be configured with different
1414 * channel mapping than backend
1415 */
1416 if (!msm_bedais[i].adm_override_ch)
1417 channels = msm_bedais[i].channel;
1418 else
1419 channels = msm_bedais[i].adm_override_ch;
1420 msm_bedais[i].passthr_mode[fedai_id] =
1421 LEGACY_PCM;
1422
1423 bits_per_sample = msm_routing_get_bit_width(
1424 msm_bedais[i].format);
1425
1426 app_type =
1427 fe_dai_app_type_cfg[fedai_id][session_type][i].app_type;
1428 if (app_type) {
1429 app_type_idx =
1430 msm_pcm_routing_get_app_type_idx(app_type);
1431 sample_rate =
1432 fe_dai_app_type_cfg[fedai_id][session_type][i]
1433 .sample_rate;
1434 bits_per_sample =
1435 app_type_cfg[app_type_idx].bit_width;
1436 } else
1437 sample_rate = msm_bedais[i].sample_rate;
1438
1439 acdb_dev_id =
1440 fe_dai_app_type_cfg[fedai_id][session_type][i]
1441 .acdb_dev_id;
1442 topology = msm_routing_get_adm_topology(fedai_id,
1443 session_type,
1444 i);
1445 copp_idx = adm_open(msm_bedais[i].port_id, path_type,
1446 sample_rate, channels, topology,
1447 perf_mode, bits_per_sample,
1448 app_type, acdb_dev_id);
1449 if ((copp_idx < 0) ||
1450 (copp_idx >= MAX_COPPS_PER_PORT)) {
1451 pr_err("%s: adm open failed copp_idx:%d\n",
Vikram Panduranga770b8382017-09-27 12:17:36 -07001452 __func__, copp_idx);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301453 mutex_unlock(&routing_lock);
1454 return -EINVAL;
1455 }
1456 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1457 __func__, fedai_id, session_type, i);
1458 set_bit(copp_idx,
1459 &session_copp_map[fedai_id][session_type][i]);
1460
1461 if (msm_is_resample_needed(
1462 sample_rate,
1463 msm_bedais[i].sample_rate))
1464 adm_copp_mfc_cfg(
1465 msm_bedais[i].port_id, copp_idx,
1466 msm_bedais[i].sample_rate);
1467
1468 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1469 unsigned long copp =
1470 session_copp_map[fedai_id][session_type][i];
1471 if (test_bit(j, &copp)) {
1472 payload.port_id[num_copps] =
1473 msm_bedais[i].port_id;
1474 payload.copp_idx[num_copps] = j;
1475 payload.app_type[num_copps] =
1476 fe_dai_app_type_cfg
1477 [fedai_id][session_type]
1478 [i].app_type;
1479 payload.acdb_dev_id[num_copps] =
1480 fe_dai_app_type_cfg
1481 [fedai_id][session_type]
1482 [i].acdb_dev_id;
1483 payload.sample_rate[num_copps] =
1484 fe_dai_app_type_cfg
1485 [fedai_id][session_type]
1486 [i].sample_rate;
1487 num_copps++;
1488 }
1489 }
1490 if ((perf_mode == LEGACY_PCM_MODE) &&
1491 (msm_bedais[i].passthr_mode[fedai_id] ==
1492 LEGACY_PCM))
1493 msm_pcm_routing_cfg_pp(msm_bedais[i].port_id,
1494 copp_idx, topology,
1495 channels);
1496 }
1497 }
1498 if (num_copps) {
1499 payload.num_copps = num_copps;
1500 payload.session_id = fe_dai_map[fedai_id][session_type].strm_id;
1501 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1502 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1503 }
1504
1505 ret = msm_pcm_routing_channel_mixer(fedai_id, perf_mode,
1506 dspst_id, stream_type);
1507 mutex_unlock(&routing_lock);
1508 return ret;
1509}
1510
1511int msm_pcm_routing_reg_phy_stream_v2(int fedai_id, int perf_mode,
1512 int dspst_id, int stream_type,
1513 struct msm_pcm_routing_evt event_info)
1514{
1515 if (msm_pcm_routing_reg_phy_stream(fedai_id, perf_mode, dspst_id,
1516 stream_type)) {
1517 pr_err("%s: failed to reg phy stream\n", __func__);
1518 return -EINVAL;
1519 }
1520
1521 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1522 fe_dai_map[fedai_id][SESSION_TYPE_RX].event_info = event_info;
1523 else
1524 fe_dai_map[fedai_id][SESSION_TYPE_TX].event_info = event_info;
1525 return 0;
1526}
1527
1528void msm_pcm_routing_dereg_phy_stream(int fedai_id, int stream_type)
1529{
1530 int i, port_type, session_type, path_type, topology;
1531 struct msm_pcm_routing_fdai_data *fdai;
1532
1533 if (!is_mm_lsm_fe_id(fedai_id)) {
1534 /* bad ID assigned in machine driver */
1535 pr_err("%s: bad MM ID\n", __func__);
1536 return;
1537 }
1538
1539 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1540 port_type = MSM_AFE_PORT_TYPE_RX;
1541 session_type = SESSION_TYPE_RX;
1542 path_type = ADM_PATH_PLAYBACK;
1543 } else {
1544 port_type = MSM_AFE_PORT_TYPE_TX;
1545 session_type = SESSION_TYPE_TX;
1546 path_type = ADM_PATH_LIVE_REC;
1547 }
1548
1549 mutex_lock(&routing_lock);
1550 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1551 if (!is_be_dai_extproc(i) &&
1552 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1553 (msm_bedais[i].active) &&
1554 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1555 int idx;
1556 unsigned long copp =
1557 session_copp_map[fedai_id][session_type][i];
1558 fdai = &fe_dai_map[fedai_id][session_type];
1559
1560 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1561 if (test_bit(idx, &copp))
1562 break;
1563
1564 if (idx >= MAX_COPPS_PER_PORT || idx < 0) {
1565 pr_debug("%s: copp idx is invalid, exiting\n",
1566 __func__);
1567 continue;
1568 }
1569 topology = adm_get_topology_for_port_copp_idx(
1570 msm_bedais[i].port_id, idx);
1571 adm_close(msm_bedais[i].port_id, fdai->perf_mode, idx);
1572 pr_debug("%s:copp:%ld,idx bit fe:%d,type:%d,be:%d\n",
1573 __func__, copp, fedai_id, session_type, i);
1574 clear_bit(idx,
1575 &session_copp_map[fedai_id][session_type][i]);
1576 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1577 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1578 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1579 (msm_bedais[i].passthr_mode[fedai_id] ==
1580 LEGACY_PCM))
1581 msm_pcm_routing_deinit_pp(msm_bedais[i].port_id,
1582 topology);
1583 }
1584 }
1585
1586 fe_dai_map[fedai_id][session_type].strm_id = INVALID_SESSION;
1587 fe_dai_map[fedai_id][session_type].be_srate = 0;
1588 mutex_unlock(&routing_lock);
1589}
1590
1591/* Check if FE/BE route is set */
1592static bool msm_pcm_routing_route_is_set(u16 be_id, u16 fe_id)
1593{
1594 bool rc = false;
1595
1596 if (!is_mm_lsm_fe_id(fe_id)) {
1597 /* recheck FE ID in the mixer control defined in this file */
1598 pr_err("%s: bad MM ID\n", __func__);
1599 return rc;
1600 }
1601
1602 if (test_bit(fe_id, &msm_bedais[be_id].fe_sessions[0]))
1603 rc = true;
1604
1605 return rc;
1606}
1607
1608static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set)
1609{
1610 int session_type, path_type, topology;
1611 u32 channels, sample_rate;
1612 uint16_t bits_per_sample = 16;
1613 struct msm_pcm_routing_fdai_data *fdai;
1614 uint32_t passthr_mode;
1615 bool is_lsm;
1616
1617 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1618
1619 if (!is_mm_lsm_fe_id(val)) {
1620 /* recheck FE ID in the mixer control defined in this file */
1621 pr_err("%s: bad MM ID\n", __func__);
1622 return;
1623 }
1624
1625 if (!route_check_fe_id_adm_support(val)) {
1626 /* ignore adm open if not supported for fe_id */
1627 pr_debug("%s: No ADM support for fe id %d\n", __func__, val);
1628 return;
1629 }
1630
1631 passthr_mode = msm_bedais[reg].passthr_mode[val];
1632 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1633 MSM_AFE_PORT_TYPE_RX) {
1634 session_type = SESSION_TYPE_RX;
1635 if (passthr_mode != LEGACY_PCM)
1636 path_type = ADM_PATH_COMPRESSED_RX;
1637 else
1638 path_type = ADM_PATH_PLAYBACK;
1639 } else {
1640 session_type = SESSION_TYPE_TX;
1641 if (passthr_mode != LEGACY_PCM)
1642 path_type = ADM_PATH_COMPRESSED_TX;
1643 else
1644 path_type = ADM_PATH_LIVE_REC;
1645 }
1646 is_lsm = (val >= MSM_FRONTEND_DAI_LSM1) &&
1647 (val <= MSM_FRONTEND_DAI_LSM8);
1648
1649 mutex_lock(&routing_lock);
1650 if (set) {
1651 if (!test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1652 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1653 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1654 voc_start_playback(set, msm_bedais[reg].port_id);
1655
1656 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1657 fdai = &fe_dai_map[val][session_type];
1658 if (msm_bedais[reg].active && fdai->strm_id !=
1659 INVALID_SESSION) {
1660 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1661 /*
1662 * check if ADM needs to be configured with different
1663 * channel mapping than backend
1664 */
1665 if (!msm_bedais[reg].adm_override_ch)
1666 channels = msm_bedais[reg].channel;
1667 else
1668 channels = msm_bedais[reg].adm_override_ch;
1669 if (session_type == SESSION_TYPE_TX &&
1670 fdai->be_srate &&
1671 (fdai->be_srate != msm_bedais[reg].sample_rate)) {
1672 pr_debug("%s: flush strm %d diff BE rates\n",
1673 __func__, fdai->strm_id);
1674
1675 if (fdai->event_info.event_func)
1676 fdai->event_info.event_func(
1677 MSM_PCM_RT_EVT_BUF_RECFG,
1678 fdai->event_info.priv_data);
1679 fdai->be_srate = 0; /* might not need it */
1680 }
1681
1682 bits_per_sample = msm_routing_get_bit_width(
1683 msm_bedais[reg].format);
1684
1685 app_type =
1686 fe_dai_app_type_cfg[val][session_type][reg].app_type;
1687 if (app_type && is_lsm) {
1688 app_type_idx =
1689 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1690 sample_rate =
1691 fe_dai_app_type_cfg[val][session_type][reg]
1692 .sample_rate;
1693 bits_per_sample =
1694 lsm_app_type_cfg[app_type_idx].bit_width;
1695 } else if (app_type) {
1696 app_type_idx =
1697 msm_pcm_routing_get_app_type_idx(app_type);
1698 sample_rate =
1699 fe_dai_app_type_cfg[val][session_type][reg]
1700 .sample_rate;
1701 bits_per_sample =
1702 app_type_cfg[app_type_idx].bit_width;
1703 } else
1704 sample_rate = msm_bedais[reg].sample_rate;
1705
1706 topology = msm_routing_get_adm_topology(val,
1707 session_type,
1708 reg);
1709 acdb_dev_id =
1710 fe_dai_app_type_cfg[val][session_type][reg].acdb_dev_id;
1711 copp_idx = adm_open(msm_bedais[reg].port_id, path_type,
1712 sample_rate, channels, topology,
1713 fdai->perf_mode, bits_per_sample,
1714 app_type, acdb_dev_id);
1715 if ((copp_idx < 0) ||
1716 (copp_idx >= MAX_COPPS_PER_PORT)) {
1717 pr_err("%s: adm open failed\n", __func__);
1718 mutex_unlock(&routing_lock);
1719 return;
1720 }
1721 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1722 __func__, val, session_type, reg);
1723 set_bit(copp_idx,
1724 &session_copp_map[val][session_type][reg]);
1725
1726 if (msm_is_resample_needed(
1727 sample_rate,
1728 msm_bedais[reg].sample_rate))
1729 adm_copp_mfc_cfg(
1730 msm_bedais[reg].port_id, copp_idx,
1731 msm_bedais[reg].sample_rate);
1732
1733 if (session_type == SESSION_TYPE_RX &&
1734 fdai->event_info.event_func)
1735 fdai->event_info.event_func(
1736 MSM_PCM_RT_EVT_DEVSWITCH,
1737 fdai->event_info.priv_data);
1738
1739 msm_pcm_routing_build_matrix(val, session_type,
1740 path_type,
1741 fdai->perf_mode,
1742 passthr_mode);
1743 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
1744 (passthr_mode == LEGACY_PCM))
1745 msm_pcm_routing_cfg_pp(msm_bedais[reg].port_id,
1746 copp_idx, topology,
1747 channels);
1748 }
1749 } else {
1750 if (test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1751 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1752 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1753 voc_start_playback(set, msm_bedais[reg].port_id);
1754 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1755 fdai = &fe_dai_map[val][session_type];
1756 if (msm_bedais[reg].active && fdai->strm_id !=
1757 INVALID_SESSION) {
1758 int idx;
1759 int port_id;
1760 unsigned long copp =
1761 session_copp_map[val][session_type][reg];
1762 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1763 if (test_bit(idx, &copp))
1764 break;
1765
1766 port_id = msm_bedais[reg].port_id;
1767 topology = adm_get_topology_for_port_copp_idx(port_id,
1768 idx);
1769 adm_close(msm_bedais[reg].port_id, fdai->perf_mode,
1770 idx);
1771 pr_debug("%s: copp: %ld, reset idx bit fe:%d, type: %d, be:%d topology=0x%x\n",
1772 __func__, copp, val, session_type, reg,
1773 topology);
1774 clear_bit(idx,
1775 &session_copp_map[val][session_type][reg]);
1776 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1777 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1778 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1779 (passthr_mode == LEGACY_PCM))
1780 msm_pcm_routing_deinit_pp(
1781 msm_bedais[reg].port_id,
1782 topology);
1783 msm_pcm_routing_build_matrix(val, session_type,
1784 path_type,
1785 fdai->perf_mode,
1786 passthr_mode);
1787 }
1788 }
1789 if ((msm_bedais[reg].port_id == VOICE_RECORD_RX)
1790 || (msm_bedais[reg].port_id == VOICE_RECORD_TX))
1791 voc_start_record(msm_bedais[reg].port_id, set, voc_session_id);
1792
1793 mutex_unlock(&routing_lock);
1794}
1795
1796static int msm_routing_get_audio_mixer(struct snd_kcontrol *kcontrol,
1797 struct snd_ctl_elem_value *ucontrol)
1798{
1799 struct soc_mixer_control *mc =
1800 (struct soc_mixer_control *)kcontrol->private_value;
1801
Meng Wang05d5e9a2018-03-28 16:45:03 +08001802 if (test_bit(mc->rshift, &msm_bedais[mc->shift].fe_sessions[0]))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301803 ucontrol->value.integer.value[0] = 1;
1804 else
1805 ucontrol->value.integer.value[0] = 0;
1806
Meng Wang05d5e9a2018-03-28 16:45:03 +08001807 pr_debug("%s: shift %x rshift %x val %ld\n", __func__, mc->shift, mc->rshift,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301808 ucontrol->value.integer.value[0]);
1809
1810 return 0;
1811}
1812
1813static int msm_routing_put_audio_mixer(struct snd_kcontrol *kcontrol,
1814 struct snd_ctl_elem_value *ucontrol)
1815{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301816 struct snd_soc_dapm_widget *widget =
1817 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301818 struct soc_mixer_control *mc =
1819 (struct soc_mixer_control *)kcontrol->private_value;
1820 struct snd_soc_dapm_update *update = NULL;
1821
1822 if (ucontrol->value.integer.value[0] &&
Meng Wang05d5e9a2018-03-28 16:45:03 +08001823 msm_pcm_routing_route_is_set(mc->shift, mc->rshift) == false) {
1824 msm_pcm_routing_process_audio(mc->shift, mc->rshift, 1);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301825 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1826 update);
1827 } else if (!ucontrol->value.integer.value[0] &&
Meng Wang05d5e9a2018-03-28 16:45:03 +08001828 msm_pcm_routing_route_is_set(mc->shift, mc->rshift) == true) {
1829 msm_pcm_routing_process_audio(mc->shift, mc->rshift, 0);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301830 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1831 update);
1832 }
1833
1834 return 1;
1835}
1836
1837static int msm_routing_get_listen_mixer(struct snd_kcontrol *kcontrol,
1838 struct snd_ctl_elem_value *ucontrol)
1839{
1840 struct soc_mixer_control *mc =
1841 (struct soc_mixer_control *)kcontrol->private_value;
1842
Meng Wang05d5e9a2018-03-28 16:45:03 +08001843 if (test_bit(mc->rshift, &msm_bedais[mc->shift].fe_sessions[0]))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301844 ucontrol->value.integer.value[0] = 1;
1845 else
1846 ucontrol->value.integer.value[0] = 0;
1847
Meng Wang05d5e9a2018-03-28 16:45:03 +08001848 pr_debug("%s: shift %x rshift %x val %ld\n", __func__, mc->shift, mc->rshift,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301849 ucontrol->value.integer.value[0]);
1850
1851 return 0;
1852}
1853
1854static int msm_routing_put_listen_mixer(struct snd_kcontrol *kcontrol,
1855 struct snd_ctl_elem_value *ucontrol)
1856{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301857 struct snd_soc_dapm_widget *widget =
1858 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301859 struct soc_mixer_control *mc =
1860 (struct soc_mixer_control *)kcontrol->private_value;
1861 struct snd_soc_dapm_update *update = NULL;
1862
Meng Wang05d5e9a2018-03-28 16:45:03 +08001863 pr_debug("%s: shift %x rshift %x val %ld\n", __func__, mc->shift, mc->rshift,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301864 ucontrol->value.integer.value[0]);
1865
1866 if (ucontrol->value.integer.value[0]) {
Meng Wang05d5e9a2018-03-28 16:45:03 +08001867 if (msm_pcm_routing_route_is_set(mc->shift, mc->rshift) == false)
1868 msm_pcm_routing_process_audio(mc->shift, mc->rshift, 1);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301869 snd_soc_dapm_mixer_update_power(widget->dapm,
1870 kcontrol, 1, update);
1871 } else if (!ucontrol->value.integer.value[0]) {
Meng Wang05d5e9a2018-03-28 16:45:03 +08001872 if (msm_pcm_routing_route_is_set(mc->shift, mc->rshift) == true)
1873 msm_pcm_routing_process_audio(mc->shift, mc->rshift, 0);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301874 snd_soc_dapm_mixer_update_power(widget->dapm,
1875 kcontrol, 0, update);
1876 }
1877
1878 return 1;
1879}
1880
1881static void msm_pcm_routing_process_voice(u16 reg, u16 val, int set)
1882{
1883 u32 session_id = 0;
1884 u16 path_type;
1885 struct media_format_info voc_be_media_format;
1886
1887 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1888
1889 session_id = msm_pcm_routing_get_voc_sessionid(val);
1890
1891 pr_debug("%s: FE DAI 0x%x session_id 0x%x\n",
1892 __func__, val, session_id);
1893
1894 mutex_lock(&routing_lock);
1895
1896 if (set)
1897 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1898 else
1899 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1900
1901 if (val == MSM_FRONTEND_DAI_DTMF_RX &&
1902 afe_get_port_type(msm_bedais[reg].port_id) ==
1903 MSM_AFE_PORT_TYPE_RX) {
1904 pr_debug("%s(): set=%d port id=0x%x for dtmf generation\n",
1905 __func__, set, msm_bedais[reg].port_id);
1906 afe_set_dtmf_gen_rx_portid(msm_bedais[reg].port_id, set);
1907 }
1908
1909 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1910 MSM_AFE_PORT_TYPE_RX)
1911 path_type = RX_PATH;
1912 else
1913 path_type = TX_PATH;
1914
1915 if (set) {
1916 if (msm_bedais[reg].active) {
1917 voc_set_route_flag(session_id, path_type, 1);
1918
1919 memset(&voc_be_media_format, 0,
1920 sizeof(struct media_format_info));
1921
1922 voc_be_media_format.port_id = msm_bedais[reg].port_id;
1923 voc_be_media_format.num_channels =
1924 msm_bedais[reg].channel;
1925 voc_be_media_format.sample_rate =
1926 msm_bedais[reg].sample_rate;
1927 voc_be_media_format.bits_per_sample =
1928 msm_bedais[reg].format;
1929 /* Defaulting this to 1 for voice call usecases */
1930 voc_be_media_format.channel_mapping[0] = 1;
1931
1932 voc_set_device_config(session_id, path_type,
1933 &voc_be_media_format);
1934
1935 if (voc_get_route_flag(session_id, TX_PATH) &&
1936 voc_get_route_flag(session_id, RX_PATH))
1937 voc_enable_device(session_id);
1938 } else {
1939 pr_debug("%s BE is not active\n", __func__);
1940 }
1941 } else {
1942 voc_set_route_flag(session_id, path_type, 0);
1943 voc_disable_device(session_id);
1944 }
1945
1946 mutex_unlock(&routing_lock);
1947
1948}
1949
1950static int msm_routing_get_voice_mixer(struct snd_kcontrol *kcontrol,
1951 struct snd_ctl_elem_value *ucontrol)
1952{
1953 struct soc_mixer_control *mc =
1954 (struct soc_mixer_control *)kcontrol->private_value;
1955
1956 mutex_lock(&routing_lock);
1957
Meng Wang05d5e9a2018-03-28 16:45:03 +08001958 if (test_bit(mc->rshift, &msm_bedais[mc->shift].fe_sessions[0]))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301959 ucontrol->value.integer.value[0] = 1;
1960 else
1961 ucontrol->value.integer.value[0] = 0;
1962
1963 mutex_unlock(&routing_lock);
1964
Meng Wang05d5e9a2018-03-28 16:45:03 +08001965 pr_debug("%s: shift %x rshift %x val %ld\n", __func__, mc->shift, mc->rshift,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301966 ucontrol->value.integer.value[0]);
1967
1968 return 0;
1969}
1970
1971static int msm_routing_put_voice_mixer(struct snd_kcontrol *kcontrol,
1972 struct snd_ctl_elem_value *ucontrol)
1973{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301974 struct snd_soc_dapm_widget *widget =
1975 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301976 struct soc_mixer_control *mc =
1977 (struct soc_mixer_control *)kcontrol->private_value;
1978 struct snd_soc_dapm_update *update = NULL;
1979
1980 if (ucontrol->value.integer.value[0]) {
Meng Wang05d5e9a2018-03-28 16:45:03 +08001981 msm_pcm_routing_process_voice(mc->shift, mc->rshift, 1);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301982 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1983 update);
1984 } else {
Meng Wang05d5e9a2018-03-28 16:45:03 +08001985 msm_pcm_routing_process_voice(mc->shift, mc->rshift, 0);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301986 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1987 update);
1988 }
1989
1990 return 1;
1991}
1992
1993static int msm_routing_get_voice_stub_mixer(struct snd_kcontrol *kcontrol,
1994 struct snd_ctl_elem_value *ucontrol)
1995{
1996 struct soc_mixer_control *mc =
1997 (struct soc_mixer_control *)kcontrol->private_value;
1998
1999 mutex_lock(&routing_lock);
2000
Meng Wang05d5e9a2018-03-28 16:45:03 +08002001 if (test_bit(mc->rshift, &msm_bedais[mc->shift].fe_sessions[0]))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302002 ucontrol->value.integer.value[0] = 1;
2003 else
2004 ucontrol->value.integer.value[0] = 0;
2005
2006 mutex_unlock(&routing_lock);
2007
Meng Wang05d5e9a2018-03-28 16:45:03 +08002008 pr_debug("%s: shift %x rshift %x val %ld\n", __func__, mc->shift, mc->rshift,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302009 ucontrol->value.integer.value[0]);
2010
2011 return 0;
2012}
2013
2014static int msm_routing_put_voice_stub_mixer(struct snd_kcontrol *kcontrol,
2015 struct snd_ctl_elem_value *ucontrol)
2016{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302017 struct snd_soc_dapm_widget *widget =
2018 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302019 struct soc_mixer_control *mc =
2020 (struct soc_mixer_control *)kcontrol->private_value;
2021 struct snd_soc_dapm_update *update = NULL;
2022
2023 if (ucontrol->value.integer.value[0]) {
2024 mutex_lock(&routing_lock);
Meng Wang05d5e9a2018-03-28 16:45:03 +08002025 set_bit(mc->rshift, &msm_bedais[mc->shift].fe_sessions[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302026 mutex_unlock(&routing_lock);
2027
2028 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2029 update);
2030 } else {
2031 mutex_lock(&routing_lock);
Meng Wang05d5e9a2018-03-28 16:45:03 +08002032 clear_bit(mc->rshift, &msm_bedais[mc->shift].fe_sessions[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302033 mutex_unlock(&routing_lock);
2034
2035 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2036 update);
2037 }
2038
Meng Wang05d5e9a2018-03-28 16:45:03 +08002039 pr_debug("%s: shift %x rshift %x val %ld\n", __func__, mc->shift, mc->rshift,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302040 ucontrol->value.integer.value[0]);
2041
2042 return 1;
2043}
2044
2045/*
2046 * Return the mapping between port ID and backend ID to enable the AFE callback
2047 * to determine the acdb_dev_id from the port id
2048 */
2049int msm_pcm_get_be_id_from_port_id(int port_id)
2050{
2051 int i;
2052 int be_id = -EINVAL;
2053
2054 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
2055 if (msm_bedais[i].port_id == port_id) {
2056 be_id = i;
2057 break;
2058 }
2059 }
2060
2061 return be_id;
2062}
2063
2064/*
2065 * Return the registered dev_acdb_id given a port ID to enable identifying the
2066 * correct AFE calibration information by comparing the header information.
2067 */
2068static int msm_pcm_get_dev_acdb_id_by_port_id(int port_id)
2069{
2070 int acdb_id = -EINVAL;
2071 int i = 0;
2072 int session;
2073 int port_type = afe_get_port_type(port_id);
2074 int be_id = msm_pcm_get_be_id_from_port_id(port_id);
2075
2076 pr_debug("%s:port_id %d be_id %d, port_type 0x%x\n",
2077 __func__, port_id, be_id, port_type);
2078
2079 if (port_type == MSM_AFE_PORT_TYPE_TX) {
2080 session = SESSION_TYPE_TX;
2081 } else if (port_type == MSM_AFE_PORT_TYPE_RX) {
2082 session = SESSION_TYPE_RX;
2083 } else {
2084 pr_err("%s: Invalid port type %d\n", __func__, port_type);
2085 acdb_id = -EINVAL;
2086 goto exit;
2087 }
2088
2089 if (be_id < 0) {
2090 pr_err("%s: Error getting backend id %d\n", __func__, be_id);
2091 goto exit;
2092 }
2093
2094 mutex_lock(&routing_lock);
2095 i = find_first_bit(&msm_bedais[be_id].fe_sessions[0],
2096 MSM_FRONTEND_DAI_MAX);
2097 if (i < MSM_FRONTEND_DAI_MAX)
2098 acdb_id = fe_dai_app_type_cfg[i][session][be_id].acdb_dev_id;
2099
2100 pr_debug("%s: FE[%d] session[%d] BE[%d] acdb_id(%d)\n",
2101 __func__, i, session, be_id, acdb_id);
2102 mutex_unlock(&routing_lock);
2103exit:
2104 return acdb_id;
2105}
2106
2107static int msm_routing_get_switch_mixer(struct snd_kcontrol *kcontrol,
2108 struct snd_ctl_elem_value *ucontrol)
2109{
2110 ucontrol->value.integer.value[0] = fm_switch_enable;
2111 pr_debug("%s: FM Switch enable %ld\n", __func__,
2112 ucontrol->value.integer.value[0]);
2113 return 0;
2114}
2115
2116static int msm_routing_put_switch_mixer(struct snd_kcontrol *kcontrol,
2117 struct snd_ctl_elem_value *ucontrol)
2118{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302119 struct snd_soc_dapm_widget *widget =
2120 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302121 struct snd_soc_dapm_update *update = NULL;
2122
2123 pr_debug("%s: FM Switch enable %ld\n", __func__,
2124 ucontrol->value.integer.value[0]);
2125 if (ucontrol->value.integer.value[0])
2126 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2127 update);
2128 else
2129 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2130 update);
2131 fm_switch_enable = ucontrol->value.integer.value[0];
2132 return 1;
2133}
2134
2135static int msm_routing_get_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2136 struct snd_ctl_elem_value *ucontrol)
2137{
2138 ucontrol->value.integer.value[0] = hfp_switch_enable;
2139 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2140 ucontrol->value.integer.value[0]);
2141 return 0;
2142}
2143
2144static int msm_routing_put_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2145 struct snd_ctl_elem_value *ucontrol)
2146{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302147 struct snd_soc_dapm_widget *widget =
2148 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302149 struct snd_soc_dapm_update *update = NULL;
2150
2151 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2152 ucontrol->value.integer.value[0]);
2153 if (ucontrol->value.integer.value[0])
2154 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2155 1, update);
2156 else
2157 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2158 0, update);
2159 hfp_switch_enable = ucontrol->value.integer.value[0];
2160 return 1;
2161}
2162
2163static int msm_routing_get_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2164 struct snd_ctl_elem_value *ucontrol)
2165{
2166 ucontrol->value.integer.value[0] = int0_mi2s_switch_enable;
2167 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2168 ucontrol->value.integer.value[0]);
2169 return 0;
2170}
2171
2172static int msm_routing_put_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2173 struct snd_ctl_elem_value *ucontrol)
2174{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302175 struct snd_soc_dapm_widget *widget =
2176 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302177 struct snd_soc_dapm_update *update = NULL;
2178
2179 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2180 ucontrol->value.integer.value[0]);
2181 if (ucontrol->value.integer.value[0])
2182 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2183 update);
2184 else
2185 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2186 update);
2187 int0_mi2s_switch_enable = ucontrol->value.integer.value[0];
2188 return 1;
2189}
2190
2191static int msm_routing_get_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2192 struct snd_ctl_elem_value *ucontrol)
2193{
2194 ucontrol->value.integer.value[0] = int4_mi2s_switch_enable;
2195 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2196 ucontrol->value.integer.value[0]);
2197 return 0;
2198}
2199
2200static int msm_routing_put_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2201 struct snd_ctl_elem_value *ucontrol)
2202{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302203 struct snd_soc_dapm_widget *widget =
2204 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302205 struct snd_soc_dapm_update *update = NULL;
2206
2207 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2208 ucontrol->value.integer.value[0]);
2209 if (ucontrol->value.integer.value[0])
2210 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2211 update);
2212 else
2213 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2214 update);
2215 int4_mi2s_switch_enable = ucontrol->value.integer.value[0];
2216 return 1;
2217}
2218
2219static int msm_routing_get_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2220 struct snd_ctl_elem_value *ucontrol)
2221{
2222 ucontrol->value.integer.value[0] = usb_switch_enable;
2223 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2224 ucontrol->value.integer.value[0]);
2225 return 0;
2226}
2227
2228static int msm_routing_put_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2229 struct snd_ctl_elem_value *ucontrol)
2230{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302231 struct snd_soc_dapm_widget *widget =
2232 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302233 struct snd_soc_dapm_update *update = NULL;
2234
2235 pr_debug("%s: USB Switch enable %ld\n", __func__,
2236 ucontrol->value.integer.value[0]);
2237 if (ucontrol->value.integer.value[0])
2238 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2239 1, update);
2240 else
2241 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2242 0, update);
2243 usb_switch_enable = ucontrol->value.integer.value[0];
2244 return 1;
2245}
2246
2247static int msm_routing_get_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2248 struct snd_ctl_elem_value *ucontrol)
2249{
2250 ucontrol->value.integer.value[0] = pri_mi2s_switch_enable;
2251 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2252 ucontrol->value.integer.value[0]);
2253 return 0;
2254}
2255
2256static int msm_routing_put_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2257 struct snd_ctl_elem_value *ucontrol)
2258{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302259 struct snd_soc_dapm_widget *widget =
2260 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302261 struct snd_soc_dapm_update *update = NULL;
2262
2263 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2264 ucontrol->value.integer.value[0]);
2265 if (ucontrol->value.integer.value[0])
2266 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2267 update);
2268 else
2269 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2270 update);
2271 pri_mi2s_switch_enable = ucontrol->value.integer.value[0];
2272 return 1;
2273}
2274
2275static int msm_routing_get_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2276 struct snd_ctl_elem_value *ucontrol)
2277{
2278 ucontrol->value.integer.value[0] = sec_mi2s_switch_enable;
2279 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2280 ucontrol->value.integer.value[0]);
2281 return 0;
2282}
2283
2284static int msm_routing_put_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2285 struct snd_ctl_elem_value *ucontrol)
2286{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302287 struct snd_soc_dapm_widget *widget =
2288 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302289 struct snd_soc_dapm_update *update = NULL;
2290
2291 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2292 ucontrol->value.integer.value[0]);
2293 if (ucontrol->value.integer.value[0])
2294 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2295 update);
2296 else
2297 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2298 update);
2299 sec_mi2s_switch_enable = ucontrol->value.integer.value[0];
2300 return 1;
2301}
2302
2303static int msm_routing_get_tert_mi2s_switch_mixer(
2304 struct snd_kcontrol *kcontrol,
2305 struct snd_ctl_elem_value *ucontrol)
2306{
2307 ucontrol->value.integer.value[0] = tert_mi2s_switch_enable;
2308 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2309 ucontrol->value.integer.value[0]);
2310 return 0;
2311}
2312
2313static int msm_routing_put_tert_mi2s_switch_mixer(
2314 struct snd_kcontrol *kcontrol,
2315 struct snd_ctl_elem_value *ucontrol)
2316{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302317 struct snd_soc_dapm_widget *widget =
2318 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302319 struct snd_soc_dapm_update *update = NULL;
2320
2321 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2322 ucontrol->value.integer.value[0]);
2323 if (ucontrol->value.integer.value[0])
2324 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2325 update);
2326 else
2327 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2328 update);
2329 tert_mi2s_switch_enable = ucontrol->value.integer.value[0];
2330 return 1;
2331}
2332
2333static int msm_routing_get_quat_mi2s_switch_mixer(
2334 struct snd_kcontrol *kcontrol,
2335 struct snd_ctl_elem_value *ucontrol)
2336{
2337 ucontrol->value.integer.value[0] = quat_mi2s_switch_enable;
2338 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2339 ucontrol->value.integer.value[0]);
2340 return 0;
2341}
2342
2343static int msm_routing_put_quat_mi2s_switch_mixer(
2344 struct snd_kcontrol *kcontrol,
2345 struct snd_ctl_elem_value *ucontrol)
2346{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302347 struct snd_soc_dapm_widget *widget =
2348 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302349 struct snd_soc_dapm_update *update = NULL;
2350
2351 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2352 ucontrol->value.integer.value[0]);
2353 if (ucontrol->value.integer.value[0])
2354 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2355 update);
2356 else
2357 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2358 update);
2359 quat_mi2s_switch_enable = ucontrol->value.integer.value[0];
2360 return 1;
2361}
2362
Rohit Kumara5077932017-09-10 22:05:05 +05302363static int msm_routing_get_quin_mi2s_switch_mixer(
2364 struct snd_kcontrol *kcontrol,
2365 struct snd_ctl_elem_value *ucontrol)
2366{
2367 ucontrol->value.integer.value[0] = quin_mi2s_switch_enable;
2368 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2369 ucontrol->value.integer.value[0]);
2370 return 0;
2371}
2372
2373static int msm_routing_put_quin_mi2s_switch_mixer(
2374 struct snd_kcontrol *kcontrol,
2375 struct snd_ctl_elem_value *ucontrol)
2376{
2377 struct snd_soc_dapm_widget *widget =
2378 snd_soc_dapm_kcontrol_widget(kcontrol);
2379 struct snd_soc_dapm_update *update = NULL;
2380
2381 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2382 ucontrol->value.integer.value[0]);
2383 if (ucontrol->value.integer.value[0])
2384 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2385 update);
2386 else
2387 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2388 update);
2389 quin_mi2s_switch_enable = ucontrol->value.integer.value[0];
2390 return 1;
2391}
2392
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302393static int msm_routing_get_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2394 struct snd_ctl_elem_value *ucontrol)
2395{
2396 ucontrol->value.integer.value[0] = fm_pcmrx_switch_enable;
2397 pr_debug("%s: FM Switch enable %ld\n", __func__,
2398 ucontrol->value.integer.value[0]);
2399 return 0;
2400}
2401
2402static int msm_routing_put_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2403 struct snd_ctl_elem_value *ucontrol)
2404{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302405 struct snd_soc_dapm_widget *widget =
2406 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302407 struct snd_soc_dapm_update *update = NULL;
2408
2409 pr_debug("%s: FM Switch enable %ld\n", __func__,
2410 ucontrol->value.integer.value[0]);
2411 if (ucontrol->value.integer.value[0])
2412 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2413 update);
2414 else
2415 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2416 update);
2417 fm_pcmrx_switch_enable = ucontrol->value.integer.value[0];
2418 return 1;
2419}
2420
2421static int msm_routing_lsm_port_get(struct snd_kcontrol *kcontrol,
2422 struct snd_ctl_elem_value *ucontrol)
2423{
2424 ucontrol->value.integer.value[0] = lsm_port_index;
2425 return 0;
2426}
2427
2428static int msm_routing_lsm_port_put(struct snd_kcontrol *kcontrol,
2429 struct snd_ctl_elem_value *ucontrol)
2430{
2431 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2432 int mux = ucontrol->value.enumerated.item[0];
2433 int lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2434
2435 if (mux >= e->items) {
2436 pr_err("%s: Invalid mux value %d\n", __func__, mux);
2437 return -EINVAL;
2438 }
2439
2440 pr_debug("%s: LSM enable %ld\n", __func__,
2441 ucontrol->value.integer.value[0]);
2442 switch (ucontrol->value.integer.value[0]) {
2443 case 1:
2444 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_TX;
2445 break;
2446 case 2:
2447 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_1_TX;
2448 break;
2449 case 3:
2450 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_2_TX;
2451 break;
2452 case 4:
2453 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_3_TX;
2454 break;
2455 case 5:
2456 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_4_TX;
2457 break;
2458 case 6:
2459 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2460 break;
2461 case 7:
2462 lsm_port = AFE_PORT_ID_TERTIARY_MI2S_TX;
2463 break;
2464 case 8:
2465 lsm_port = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2466 break;
2467 case 9:
2468 lsm_port = ADM_LSM_PORT_ID;
2469 break;
2470 case 10:
2471 lsm_port = AFE_PORT_ID_INT3_MI2S_TX;
2472 break;
2473 default:
2474 pr_err("Default lsm port");
2475 break;
2476 }
2477 set_lsm_port(lsm_port);
2478 lsm_port_index = ucontrol->value.integer.value[0];
2479
2480 return 0;
2481}
2482
2483static int msm_routing_lsm_func_get(struct snd_kcontrol *kcontrol,
2484 struct snd_ctl_elem_value *ucontrol)
2485{
2486 int i;
2487 u16 port_id;
2488 enum afe_mad_type mad_type;
2489
2490 pr_debug("%s: enter\n", __func__);
2491 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2492 if (!strnstr(kcontrol->id.name, lsm_port_text[i],
2493 strlen(lsm_port_text[i])))
2494 break;
2495
2496 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2497 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2498 return -EINVAL;
2499 }
2500
2501 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2502
2503 /*Check for Tertiary/Quaternary/INT3 TX port*/
2504 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2505 strlen(lsm_port_text[7])))
2506 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2507
2508 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2509 strlen(lsm_port_text[8])))
2510 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2511
2512 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2513 strlen(lsm_port_text[10])))
2514 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2515
2516 mad_type = afe_port_get_mad_type(port_id);
2517 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2518 mad_type);
2519 switch (mad_type) {
2520 case MAD_HW_NONE:
2521 ucontrol->value.integer.value[0] = MADNONE;
2522 break;
2523 case MAD_HW_AUDIO:
2524 ucontrol->value.integer.value[0] = MADAUDIO;
2525 break;
2526 case MAD_HW_BEACON:
2527 ucontrol->value.integer.value[0] = MADBEACON;
2528 break;
2529 case MAD_HW_ULTRASOUND:
2530 ucontrol->value.integer.value[0] = MADULTRASOUND;
2531 break;
2532 case MAD_SW_AUDIO:
2533 ucontrol->value.integer.value[0] = MADSWAUDIO;
2534 break;
2535 default:
2536 WARN(1, "Unknown\n");
2537 return -EINVAL;
2538 }
2539 return 0;
2540}
2541
2542static int msm_routing_lsm_func_put(struct snd_kcontrol *kcontrol,
2543 struct snd_ctl_elem_value *ucontrol)
2544{
2545 int i;
2546 u16 port_id;
2547 enum afe_mad_type mad_type;
2548
2549 pr_debug("%s: enter\n", __func__);
2550 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2551 if (strnstr(kcontrol->id.name, lsm_port_text[i],
2552 strlen(lsm_port_text[i])))
2553 break;
2554
2555 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2556 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2557 return -EINVAL;
2558 }
2559
2560 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2561 switch (ucontrol->value.integer.value[0]) {
2562 case MADNONE:
2563 mad_type = MAD_HW_NONE;
2564 break;
2565 case MADAUDIO:
2566 mad_type = MAD_HW_AUDIO;
2567 break;
2568 case MADBEACON:
2569 mad_type = MAD_HW_BEACON;
2570 break;
2571 case MADULTRASOUND:
2572 mad_type = MAD_HW_ULTRASOUND;
2573 break;
2574 case MADSWAUDIO:
2575 mad_type = MAD_SW_AUDIO;
2576 break;
2577 default:
2578 WARN(1, "Unknown\n");
2579 return -EINVAL;
2580 }
2581
2582 /*Check for Tertiary/Quaternary/INT3 TX port*/
2583 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2584 strlen(lsm_port_text[7])))
2585 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2586
2587 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2588 strlen(lsm_port_text[8])))
2589 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2590
2591 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2592 strlen(lsm_port_text[10])))
2593 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2594
2595 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2596 mad_type);
2597 return afe_port_set_mad_type(port_id, mad_type);
2598}
2599
2600static const char *const adm_override_chs_text[] = {"Zero", "One", "Two"};
2601
2602static SOC_ENUM_SINGLE_EXT_DECL(slim_7_rx_adm_override_chs,
2603 adm_override_chs_text);
2604
2605static int msm_routing_adm_get_backend_idx(struct snd_kcontrol *kcontrol)
2606{
2607 int backend_id;
2608
2609 if (strnstr(kcontrol->id.name, "SLIM7_RX", sizeof("SLIM7_RX"))) {
2610 backend_id = MSM_BACKEND_DAI_SLIMBUS_7_RX;
2611 } else {
2612 pr_err("%s: unsupported backend id: %s",
2613 __func__, kcontrol->id.name);
2614 return -EINVAL;
2615 }
2616
2617 return backend_id;
2618}
2619static int msm_routing_adm_channel_config_get(
2620 struct snd_kcontrol *kcontrol,
2621 struct snd_ctl_elem_value *ucontrol)
2622{
2623 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2624
2625 if (backend_id >= 0) {
2626 mutex_lock(&routing_lock);
2627 ucontrol->value.integer.value[0] =
2628 msm_bedais[backend_id].adm_override_ch;
2629 pr_debug("%s: adm channel count %ld for BE:%d\n", __func__,
2630 ucontrol->value.integer.value[0], backend_id);
2631 mutex_unlock(&routing_lock);
2632 }
2633
2634 return 0;
2635}
2636
2637static int msm_routing_adm_channel_config_put(
2638 struct snd_kcontrol *kcontrol,
2639 struct snd_ctl_elem_value *ucontrol)
2640{
2641 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2642
2643 if (backend_id >= 0) {
2644 mutex_lock(&routing_lock);
2645 msm_bedais[backend_id].adm_override_ch =
2646 ucontrol->value.integer.value[0];
2647 pr_debug("%s:updating BE :%d adm channels: %d\n",
2648 __func__, backend_id,
2649 msm_bedais[backend_id].adm_override_ch);
2650 mutex_unlock(&routing_lock);
2651 }
2652
2653 return 0;
2654}
2655
2656static const struct snd_kcontrol_new adm_channel_config_controls[] = {
2657 SOC_ENUM_EXT("SLIM7_RX ADM Channels", slim_7_rx_adm_override_chs,
2658 msm_routing_adm_channel_config_get,
2659 msm_routing_adm_channel_config_put),
2660};
2661
2662static int msm_routing_slim_0_rx_aanc_mux_get(struct snd_kcontrol *kcontrol,
2663 struct snd_ctl_elem_value *ucontrol)
2664{
2665
2666 mutex_lock(&routing_lock);
2667 ucontrol->value.integer.value[0] = slim0_rx_aanc_fb_port;
2668 mutex_unlock(&routing_lock);
2669 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2670 ucontrol->value.integer.value[0]);
2671 return 0;
2672};
2673
2674static int msm_routing_slim_0_rx_aanc_mux_put(struct snd_kcontrol *kcontrol,
2675 struct snd_ctl_elem_value *ucontrol)
2676{
2677 struct aanc_data aanc_info;
2678
2679 mutex_lock(&routing_lock);
2680 memset(&aanc_info, 0x00, sizeof(aanc_info));
2681 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2682 ucontrol->value.integer.value[0]);
2683 slim0_rx_aanc_fb_port = ucontrol->value.integer.value[0];
2684 if (ucontrol->value.integer.value[0] == 0) {
2685 aanc_info.aanc_active = false;
2686 aanc_info.aanc_tx_port = 0;
2687 aanc_info.aanc_rx_port = 0;
2688 } else {
2689 aanc_info.aanc_active = true;
2690 aanc_info.aanc_rx_port = SLIMBUS_0_RX;
2691 aanc_info.aanc_tx_port =
2692 (SLIMBUS_0_RX - 1 + (slim0_rx_aanc_fb_port * 2));
2693 }
2694 afe_set_aanc_info(&aanc_info);
2695 mutex_unlock(&routing_lock);
2696 return 0;
2697};
2698static int msm_routing_get_port_mixer(struct snd_kcontrol *kcontrol,
2699 struct snd_ctl_elem_value *ucontrol)
2700{
2701 int idx = 0, shift = 0;
2702 struct soc_mixer_control *mc =
2703 (struct soc_mixer_control *)kcontrol->private_value;
2704
Meng Wang05d5e9a2018-03-28 16:45:03 +08002705 idx = mc->rshift/(sizeof(msm_bedais[mc->shift].port_sessions[0]) * 8);
2706 shift = mc->rshift%(sizeof(msm_bedais[mc->shift].port_sessions[0]) * 8);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302707
2708 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2709 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2710 return -EINVAL;
2711 }
2712
2713 if (test_bit(shift,
Meng Wang05d5e9a2018-03-28 16:45:03 +08002714 (unsigned long *)&msm_bedais[mc->shift].port_sessions[idx]))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302715 ucontrol->value.integer.value[0] = 1;
2716 else
2717 ucontrol->value.integer.value[0] = 0;
2718
Meng Wang05d5e9a2018-03-28 16:45:03 +08002719 pr_debug("%s: shift %x rshift %x val %ld\n", __func__, mc->shift, mc->rshift,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302720 ucontrol->value.integer.value[0]);
2721
2722 return 0;
2723}
2724
2725static int msm_routing_put_port_mixer(struct snd_kcontrol *kcontrol,
2726 struct snd_ctl_elem_value *ucontrol)
2727{
2728 int idx = 0, shift = 0;
2729 struct soc_mixer_control *mc =
2730 (struct soc_mixer_control *)kcontrol->private_value;
2731
Meng Wang05d5e9a2018-03-28 16:45:03 +08002732 idx = mc->rshift/(sizeof(msm_bedais[mc->shift].port_sessions[0]) * 8);
2733 shift = mc->rshift%(sizeof(msm_bedais[mc->shift].port_sessions[0]) * 8);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302734
2735 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2736 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2737 return -EINVAL;
2738 }
2739
Meng Wang05d5e9a2018-03-28 16:45:03 +08002740 pr_debug("%s: shift 0x%x rshift 0x%x val %ld idx %d reminder shift %d\n",
2741 __func__, mc->shift, mc->rshift,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302742 ucontrol->value.integer.value[0], idx, shift);
2743
2744 if (ucontrol->value.integer.value[0]) {
Meng Wang05d5e9a2018-03-28 16:45:03 +08002745 afe_loopback(1, msm_bedais[mc->shift].port_id,
2746 msm_bedais[mc->rshift].port_id);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302747 set_bit(shift,
Meng Wang05d5e9a2018-03-28 16:45:03 +08002748 (unsigned long *)&msm_bedais[mc->shift].port_sessions[idx]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302749 } else {
Meng Wang05d5e9a2018-03-28 16:45:03 +08002750 afe_loopback(0, msm_bedais[mc->shift].port_id,
2751 msm_bedais[mc->rshift].port_id);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302752 clear_bit(shift,
Meng Wang05d5e9a2018-03-28 16:45:03 +08002753 (unsigned long *)&msm_bedais[mc->shift].port_sessions[idx]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302754 }
2755
2756 return 1;
2757}
2758
2759static int msm_pcm_get_channel_rule_index(struct snd_kcontrol *kcontrol,
2760 struct snd_ctl_elem_value *ucontrol)
2761{
2762 u16 fe_id = 0;
2763
2764 fe_id = ((struct soc_mixer_control *)
2765 kcontrol->private_value)->shift;
2766 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2767 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2768 return -EINVAL;
2769 }
2770
2771 ucontrol->value.integer.value[0] = channel_mixer[fe_id].rule;
2772
2773 return 0;
2774}
2775
2776static int msm_pcm_put_channel_rule_index(struct snd_kcontrol *kcontrol,
2777 struct snd_ctl_elem_value *ucontrol)
2778{
2779 u16 fe_id = 0;
2780
2781 fe_id = ((struct soc_mixer_control *)
2782 kcontrol->private_value)->shift;
2783 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2784 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2785 return -EINVAL;
2786 }
2787
2788 channel_mixer[fe_id].rule = ucontrol->value.integer.value[0];
2789
2790 return 1;
2791}
2792
2793static int msm_pcm_get_out_chs(struct snd_kcontrol *kcontrol,
2794 struct snd_ctl_elem_value *ucontrol)
2795{
2796 u16 fe_id = 0;
2797
2798 fe_id = ((struct soc_multi_mixer_control *)
2799 kcontrol->private_value)->shift;
2800 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2801 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2802 return -EINVAL;
2803 }
2804
2805 ucontrol->value.integer.value[0] =
2806 channel_mixer[fe_id].output_channel;
2807 return 0;
2808}
2809
2810static int msm_pcm_put_out_chs(struct snd_kcontrol *kcontrol,
2811 struct snd_ctl_elem_value *ucontrol)
2812{
2813 u16 fe_id = 0;
2814
2815 fe_id = ((struct soc_multi_mixer_control *)
2816 kcontrol->private_value)->shift;
2817 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2818 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2819 return -EINVAL;
2820 }
2821
2822 pr_debug("%s: fe_id is %d, output channels = %d\n", __func__,
2823 fe_id,
2824 (unsigned int)(ucontrol->value.integer.value[0]));
2825 channel_mixer[fe_id].output_channel =
2826 (unsigned int)(ucontrol->value.integer.value[0]);
2827
2828 return 1;
2829}
2830
2831static const char *const ch_mixer[] = {"Disable", "Enable"};
2832
2833/* If new backend is added, need update this array */
2834static const char *const be_name[] = {
2835"ZERO", "PRI_I2S_RX", "PRI_I2S_TX", "SLIM_0_RX",
2836"SLIM_0_TX", "HDMI_RX", "INT_BT_SCO_RX", "INT_BT_SCO_TX",
2837"INT_FM_RX", "INT_FM_TX", "AFE_PCM_RX", "AFE_PCM_TX",
2838"AUXPCM_RX", "AUXPCM_TX", "VOICE_PLAYBACK_TX", "VOICE2_PLAYBACK_TX",
2839"INCALL_RECORD_RX", "INCALL_RECORD_TX", "MI2S_RX", "MI2S_TX",
2840"SEC_I2S_RX", "SLIM_1_RX", "SLIM_1_TX", "SLIM_2_RX",
2841"SLIM_2_TX", "SLIM_3_RX", "SLIM_3_TX", "SLIM_4_RX",
2842"SLIM_4_TX", "SLIM_5_RX", "SLIM_5_TX", "SLIM_6_RX",
2843"SLIM_6_TX", "SLIM_7_RX", "SLIM_7_TX", "SLIM_8_RX",
2844"SLIM_8_TX", "EXTPROC_RX", "EXTPROC_TX", "EXPROC_EC_TX",
2845"QUAT_MI2S_RX", "QUAT_MI2S_TX", "SECOND_MI2S_RX", "SECOND_MI2S_TX",
2846"PRI_MI2S_RX", "PRI_MI2S_TX", "TERT_MI2S_RX", "TERT_MI2S_TX",
2847"AUDIO_I2S_RX", "SEC_AUXPCM_RX", "SEC_AUXPCM_TX", "SPDIF_RX",
2848"SECOND_MI2S_RX_SD1", "QUIN_MI2S_RX", "QUIN_MI2S_TX", "SENARY_MI2S_TX",
2849"PRI_TDM_RX_0", "PRI_TDM_TX_0", "PRI_TDM_RX_1", "PRI_TDM_TX_1",
2850"PRI_TDM_RX_2", "PRI_TDM_TX_2", "PRI_TDM_RX_3", "PRI_TDM_TX_3",
2851"PRI_TDM_RX_4", "PRI_TDM_TX_4", "PRI_TDM_RX_5", "PRI_TDM_TX_5",
2852"PRI_TDM_RX_6", "PRI_TDM_TX_6", "PRI_TDM_RX_7", "PRI_TDM_TX_7",
2853"SEC_TDM_RX_0", "SEC_TDM_TX_0", "SEC_TDM_RX_1", "SEC_TDM_TX_1",
2854"SEC_TDM_RX_2", "SEC_TDM_TX_2", "SEC_TDM_RX_3", "SEC_TDM_TX_3",
2855"SEC_TDM_RX_4", "SEC_TDM_TX_4", "SEC_TDM_RX_5", "SEC_TDM_TX_5",
2856"SEC_TDM_RX_6", "SEC_TDM_TX_6", "SEC_TDM_RX_7", "SEC_TDM_TX_7",
2857"TERT_TDM_RX_0", "TERT_TDM_TX_0", "TERT_TDM_RX_1", "TERT_TDM_TX_1",
2858"TERT_TDM_RX_2", "TERT_TDM_TX_2", "TERT_TDM_RX_3", "TERT_TDM_TX_3",
2859"TERT_TDM_RX_4", "TERT_TDM_TX_4", "TERT_TDM_RX_5", "TERT_TDM_TX_5",
2860"TERT_TDM_RX_6", "TERT_TDM_TX_6", "TERT_TDM_RX_7", "TERT_TDM_TX_7",
2861"QUAT_TDM_RX_0", "QUAT_TDM_TX_0", "QUAT_TDM_RX_1", "QUAT_TDM_TX_1",
2862"QUAT_TDM_RX_2", "QUAT_TDM_TX_2", "QUAT_TDM_RX_3", "QUAT_TDM_TX_3",
2863"QUAT_TDM_RX_4", "QUAT_TDM_TX_4", "QUAT_TDM_RX_5", "QUAT_TDM_TX_5",
2864"QUAT_TDM_RX_6", "QUAT_TDM_TX_6", "QUAT_TDM_RX_7", "QUAT_TDM_TX_7",
Rohit Kumara5077932017-09-10 22:05:05 +05302865"QUIN_TDM_RX_0", "QUIN_TDM_TX_0", "QUIN_TDM_RX_1", "QUIN_TDM_TX_1",
2866"QUIN_TDM_RX_2", "QUIN_TDM_TX_2", "QUIN_TDM_RX_3", "QUIN_TDM_TX_3",
2867"QUIN_TDM_RX_4", "QUIN_TDM_TX_4", "QUIN_TDM_RX_5", "QUIN_TDM_TX_5",
2868"QUIN_TDM_RX_6", "QUIN_TDM_TX_6", "QUIN_TDM_RX_7", "QUIN_TDM_TX_7",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302869"INT_BT_A2DP_RX", "USB_RX", "USB_TX", "DISPLAY_PORT_RX",
2870"TERT_AUXPCM_RX", "TERT_AUXPCM_TX", "QUAT_AUXPCM_RX", "QUAT_AUXPCM_TX",
Rohit Kumara5077932017-09-10 22:05:05 +05302871"QUIN_AUXPCM_RX", "QUIN_AUXPCM_TX",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302872"INT0_MI2S_RX", "INT0_MI2S_TX", "INT1_MI2S_RX", "INT1_MI2S_TX",
2873"INT2_MI2S_RX", "INT2_MI2S_TX", "INT3_MI2S_RX", "INT3_MI2S_TX",
2874"INT4_MI2S_RX", "INT4_MI2S_TX", "INT5_MI2S_RX", "INT5_MI2S_TX",
2875"INT6_MI2S_RX", "INT6_MI2S_TX"
2876};
2877
2878static SOC_ENUM_SINGLE_DECL(mm1_channel_mux,
2879 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, ch_mixer);
2880static SOC_ENUM_SINGLE_DECL(mm2_channel_mux,
2881 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA2, ch_mixer);
2882static SOC_ENUM_SINGLE_DECL(mm3_channel_mux,
2883 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA3, ch_mixer);
2884static SOC_ENUM_SINGLE_DECL(mm4_channel_mux,
2885 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA4, ch_mixer);
2886
2887static SOC_ENUM_DOUBLE_DECL(mm1_ch1_enum,
2888 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 0, be_name);
2889static SOC_ENUM_DOUBLE_DECL(mm1_ch2_enum,
2890 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 1, be_name);
2891static SOC_ENUM_DOUBLE_DECL(mm1_ch3_enum,
2892 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 2, be_name);
2893static SOC_ENUM_DOUBLE_DECL(mm1_ch4_enum,
2894 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 3, be_name);
2895static SOC_ENUM_DOUBLE_DECL(mm1_ch5_enum,
2896 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 4, be_name);
2897static SOC_ENUM_DOUBLE_DECL(mm1_ch6_enum,
2898 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 5, be_name);
2899static SOC_ENUM_DOUBLE_DECL(mm1_ch7_enum,
2900 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 6, be_name);
2901static SOC_ENUM_DOUBLE_DECL(mm1_ch8_enum,
2902 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 7, be_name);
2903
2904static int msm_pcm_get_ctl_enum_info(struct snd_ctl_elem_info *uinfo,
2905 unsigned int channels,
2906 unsigned int items, const char *const names[])
2907{
2908 if (uinfo->value.enumerated.item >= items)
2909 uinfo->value.enumerated.item = items - 1;
2910
2911 WARN(strlen(names[uinfo->value.enumerated.item]) >=
2912 sizeof(uinfo->value.enumerated.name),
2913 "ALSA: too long item name '%s'\n",
2914 names[uinfo->value.enumerated.item]);
2915 strlcpy(uinfo->value.enumerated.name,
2916 names[uinfo->value.enumerated.item],
2917 sizeof(uinfo->value.enumerated.name));
2918 return 0;
2919}
2920
2921static int msm_pcm_channel_mixer_info(struct snd_kcontrol *kcontrol,
2922 struct snd_ctl_elem_info *uinfo)
2923{
2924 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2925
2926 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2927 uinfo->count = 1;
2928
2929 uinfo->value.enumerated.items = ARRAY_SIZE(ch_mixer);
2930 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2931
2932 return 0;
2933}
2934static int msm_pcm_channel_mixer_get(struct snd_kcontrol *kcontrol,
2935 struct snd_ctl_elem_value *ucontrol)
2936{
2937 u16 fe_id = 0;
2938
2939 fe_id = ((struct soc_enum *)
2940 kcontrol->private_value)->shift_l;
2941 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2942 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2943 return -EINVAL;
2944 }
2945
2946 pr_debug("%s: FE %d %s\n", __func__,
2947 fe_id,
2948 channel_mixer[fe_id].enable ? "Enabled" : "Disabled");
2949 ucontrol->value.enumerated.item[0] = channel_mixer[fe_id].enable;
2950 return 0;
2951}
2952
2953static int msm_pcm_channel_mixer_put(struct snd_kcontrol *kcontrol,
2954 struct snd_ctl_elem_value *ucontrol)
2955{
2956 u16 fe_id = 0;
2957
2958 fe_id = ((struct soc_enum *)
2959 kcontrol->private_value)->shift_l;
2960 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2961 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2962 return -EINVAL;
2963 }
2964
2965 channel_mixer[fe_id].enable = ucontrol->value.enumerated.item[0];
2966 pr_debug("%s: %s FE %d\n", __func__,
2967 channel_mixer[fe_id].enable ? "Enable" : "Disable",
2968 fe_id);
2969 return 0;
2970}
2971
2972static int msm_pcm_channel_input_be_info(struct snd_kcontrol *kcontrol,
2973 struct snd_ctl_elem_info *uinfo)
2974{
2975 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2976
2977 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2978 uinfo->count = 1;
2979
2980 uinfo->value.enumerated.items = ARRAY_SIZE(be_name);
2981 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2982
2983 return 0;
2984}
2985
2986static int msm_pcm_channel_input_be_put(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 channel_input[fe_id][in_ch] = ucontrol->value.enumerated.item[0];
3004 return 1;
3005}
3006
3007static int msm_pcm_channel_input_be_get(struct snd_kcontrol *kcontrol,
3008 struct snd_ctl_elem_value *ucontrol)
3009{
3010 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3011 u16 fe_id = 0, in_ch = 0;
3012
3013 fe_id = e->shift_l;
3014 in_ch = e->shift_r;
3015 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3016 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3017 return -EINVAL;
3018 }
3019 if (in_ch >= ADM_MAX_CHANNELS) {
3020 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
3021 return -EINVAL;
3022 }
3023
3024 ucontrol->value.enumerated.item[0] = channel_input[fe_id][in_ch];
3025 return 1;
3026}
3027
3028
3029static int msm_pcm_channel_weight_info(struct snd_kcontrol *kcontrol,
3030 struct snd_ctl_elem_info *uinfo)
3031{
3032 uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
3033 uinfo->count = ADM_MAX_CHANNELS;
3034 uinfo->value.integer.min = 0;
3035 uinfo->value.integer.max = WEIGHT_0_DB;
3036
3037 return 0;
3038}
3039
3040static int msm_pcm_channel_weight_put(struct snd_kcontrol *kcontrol,
3041 struct snd_ctl_elem_value *ucontrol)
3042{
3043 u16 fe_id = 0, out_ch = 0;
3044 int i, weight;
3045
3046 fe_id = ((struct soc_multi_mixer_control *)
3047 kcontrol->private_value)->shift;
3048 out_ch = ((struct soc_multi_mixer_control *)
3049 kcontrol->private_value)->rshift;
3050 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3051 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3052 return -EINVAL;
3053 }
3054 if (out_ch >= ADM_MAX_CHANNELS) {
3055 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3056 return -EINVAL;
3057 }
3058
3059 pr_debug("%s: FE_ID: %d, channel weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
3060 __func__, fe_id,
3061 ucontrol->value.integer.value[0],
3062 ucontrol->value.integer.value[1],
3063 ucontrol->value.integer.value[2],
3064 ucontrol->value.integer.value[3],
3065 ucontrol->value.integer.value[4],
3066 ucontrol->value.integer.value[5],
3067 ucontrol->value.integer.value[6],
3068 ucontrol->value.integer.value[7]);
3069
3070 for (i = 0; i < ADM_MAX_CHANNELS; ++i) {
3071 weight = ucontrol->value.integer.value[i];
3072 channel_mixer[fe_id].channel_weight[out_ch][i] = weight;
3073 pr_debug("%s: FE_ID %d, output %d input %d weight %d\n",
3074 __func__, fe_id, out_ch, i,
3075 channel_mixer[fe_id].channel_weight[out_ch][i]);
3076 }
3077
3078 return 0;
3079}
3080
3081static int msm_pcm_channel_weight_get(struct snd_kcontrol *kcontrol,
3082 struct snd_ctl_elem_value *ucontrol)
3083{
3084 u16 fe_id = 0, out_ch = 0;
3085 int i;
3086
3087 fe_id = ((struct soc_multi_mixer_control *)
3088 kcontrol->private_value)->shift;
3089 out_ch = ((struct soc_multi_mixer_control *)
3090 kcontrol->private_value)->rshift;
3091 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3092 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3093 return -EINVAL;
3094 }
3095 if (out_ch >= ADM_MAX_CHANNELS) {
3096 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3097 return -EINVAL;
3098 }
3099
3100 for (i = 0; i < ADM_MAX_CHANNELS; ++i)
3101 ucontrol->value.integer.value[i] =
3102 channel_mixer[fe_id].channel_weight[out_ch][i];
3103
3104 pr_debug("%s: FE_ID: %d, weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld",
3105 __func__, fe_id,
3106 ucontrol->value.integer.value[0],
3107 ucontrol->value.integer.value[1],
3108 ucontrol->value.integer.value[2],
3109 ucontrol->value.integer.value[3],
3110 ucontrol->value.integer.value[4],
3111 ucontrol->value.integer.value[5],
3112 ucontrol->value.integer.value[6],
3113 ucontrol->value.integer.value[7]);
3114
3115 return 0;
3116}
3117
3118static const struct snd_kcontrol_new channel_mixer_controls[] = {
3119 SOC_SINGLE_EXT("MultiMedia1 Channel Rule", SND_SOC_NOPM,
3120 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3121 msm_pcm_get_channel_rule_index,
3122 msm_pcm_put_channel_rule_index),
3123 SOC_SINGLE_EXT("MultiMedia2 Channel Rule", SND_SOC_NOPM,
3124 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3125 msm_pcm_get_channel_rule_index,
3126 msm_pcm_put_channel_rule_index),
3127 SOC_SINGLE_EXT("MultiMedia3 Channel Rule", SND_SOC_NOPM,
3128 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3129 msm_pcm_get_channel_rule_index,
3130 msm_pcm_put_channel_rule_index),
3131 SOC_SINGLE_EXT("MultiMedia4 Channel Rule", SND_SOC_NOPM,
3132 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3133 msm_pcm_get_channel_rule_index,
3134 msm_pcm_put_channel_rule_index),
3135 SOC_SINGLE_EXT("MultiMedia5 Channel Rule", SND_SOC_NOPM,
3136 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3137 msm_pcm_get_channel_rule_index,
3138 msm_pcm_put_channel_rule_index),
3139 SOC_SINGLE_EXT("MultiMedia6 Channel Rule", SND_SOC_NOPM,
3140 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3141 msm_pcm_get_channel_rule_index,
3142 msm_pcm_put_channel_rule_index),
3143
3144 SOC_SINGLE_EXT("MultiMedia1 Channels", SND_SOC_NOPM,
3145 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3146 msm_pcm_get_out_chs,
3147 msm_pcm_put_out_chs),
3148 SOC_SINGLE_EXT("MultiMedia2 Channels", SND_SOC_NOPM,
3149 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3150 msm_pcm_get_out_chs,
3151 msm_pcm_put_out_chs),
3152 SOC_SINGLE_EXT("MultiMedia3 Channels", SND_SOC_NOPM,
3153 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3154 msm_pcm_get_out_chs,
3155 msm_pcm_put_out_chs),
3156 SOC_SINGLE_EXT("MultiMedia4 Channels", SND_SOC_NOPM,
3157 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3158 msm_pcm_get_out_chs,
3159 msm_pcm_put_out_chs),
3160 SOC_SINGLE_EXT("MultiMedia5 Channels", SND_SOC_NOPM,
3161 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3162 msm_pcm_get_out_chs,
3163 msm_pcm_put_out_chs),
3164 SOC_SINGLE_EXT("MultiMedia6 Channels", SND_SOC_NOPM,
3165 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3166 msm_pcm_get_out_chs,
3167 msm_pcm_put_out_chs),
3168 {
3169 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3170 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3171 .name = "MultiMedia1 Channel Mixer",
3172 .info = msm_pcm_channel_mixer_info,
3173 .get = msm_pcm_channel_mixer_get,
3174 .put = msm_pcm_channel_mixer_put,
3175 .private_value = (unsigned long)&(mm1_channel_mux)
3176 },
3177 {
3178 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3179 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3180 .name = "MultiMedia2 Channel Mixer",
3181 .info = msm_pcm_channel_mixer_info,
3182 .get = msm_pcm_channel_mixer_get,
3183 .put = msm_pcm_channel_mixer_put,
3184 .private_value = (unsigned long)&(mm2_channel_mux)
3185 },
3186 {
3187 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3188 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3189 .name = "MultiMedia3 Channel Mixer",
3190 .info = msm_pcm_channel_mixer_info,
3191 .get = msm_pcm_channel_mixer_get,
3192 .put = msm_pcm_channel_mixer_put,
3193 .private_value = (unsigned long)&(mm3_channel_mux)
3194 },
3195 {
3196 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3197 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3198 .name = "MultiMedia4 Channel Mixer",
3199 .info = msm_pcm_channel_mixer_info,
3200 .get = msm_pcm_channel_mixer_get,
3201 .put = msm_pcm_channel_mixer_put,
3202 .private_value = (unsigned long)&(mm4_channel_mux)
3203 },
3204 {
3205 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3206 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3207 .name = "MultiMedia1 Output Channel1",
3208 .info = msm_pcm_channel_weight_info,
3209 .get = msm_pcm_channel_weight_get,
3210 .put = msm_pcm_channel_weight_put,
3211 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3212 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 0,}
3213 },
3214 {
3215 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3216 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3217 .name = "MultiMedia1 Output Channel2",
3218 .info = msm_pcm_channel_weight_info,
3219 .get = msm_pcm_channel_weight_get,
3220 .put = msm_pcm_channel_weight_put,
3221 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3222 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 1, }
3223 },
3224 {
3225 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3226 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3227 .name = "MultiMedia1 Output Channel3",
3228 .info = msm_pcm_channel_weight_info,
3229 .get = msm_pcm_channel_weight_get,
3230 .put = msm_pcm_channel_weight_put,
3231 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3232 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 2,}
3233 },
3234 {
3235 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3236 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3237 .name = "MultiMedia1 Output Channel4",
3238 .info = msm_pcm_channel_weight_info,
3239 .get = msm_pcm_channel_weight_get,
3240 .put = msm_pcm_channel_weight_put,
3241 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3242 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 3,}
3243 },
3244 {
3245 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3246 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3247 .name = "MultiMedia1 Output Channel5",
3248 .info = msm_pcm_channel_weight_info,
3249 .get = msm_pcm_channel_weight_get,
3250 .put = msm_pcm_channel_weight_put,
3251 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3252 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 4,}
3253 },
3254 {
3255 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3256 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3257 .name = "MultiMedia1 Output Channel6",
3258 .info = msm_pcm_channel_weight_info,
3259 .get = msm_pcm_channel_weight_get,
3260 .put = msm_pcm_channel_weight_put,
3261 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3262 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 5,}
3263 },
3264 {
3265 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3266 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3267 .name = "MultiMedia1 Output Channel7",
3268 .info = msm_pcm_channel_weight_info,
3269 .get = msm_pcm_channel_weight_get,
3270 .put = msm_pcm_channel_weight_put,
3271 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3272 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 6,}
3273 },
3274 {
3275 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3276 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3277 .name = "MultiMedia1 Output Channel8",
3278 .info = msm_pcm_channel_weight_info,
3279 .get = msm_pcm_channel_weight_get,
3280 .put = msm_pcm_channel_weight_put,
3281 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3282 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 7,}
3283 },
3284 {
3285 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3286 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3287 .name = "MultiMedia2 Output Channel1",
3288 .info = msm_pcm_channel_weight_info,
3289 .get = msm_pcm_channel_weight_get,
3290 .put = msm_pcm_channel_weight_put,
3291 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3292 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 0,}
3293 },
3294 {
3295 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3296 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3297 .name = "MultiMedia2 Output Channel2",
3298 .info = msm_pcm_channel_weight_info,
3299 .get = msm_pcm_channel_weight_get,
3300 .put = msm_pcm_channel_weight_put,
3301 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3302 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 1,}
3303 },
3304 {
3305 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3306 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3307 .name = "MultiMedia2 Output Channel3",
3308 .info = msm_pcm_channel_weight_info,
3309 .get = msm_pcm_channel_weight_get,
3310 .put = msm_pcm_channel_weight_put,
3311 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3312 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 2,}
3313 },
3314 {
3315 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3316 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3317 .name = "MultiMedia3 Output Channel1",
3318 .info = msm_pcm_channel_weight_info,
3319 .get = msm_pcm_channel_weight_get,
3320 .put = msm_pcm_channel_weight_put,
3321 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3322 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 0,}
3323 },
3324 {
3325 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3326 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3327 .name = "MultiMedia3 Output Channel2",
3328 .info = msm_pcm_channel_weight_info,
3329 .get = msm_pcm_channel_weight_get,
3330 .put = msm_pcm_channel_weight_put,
3331 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3332 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 1,}
3333 },
3334 {
3335 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3336 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3337 .name = "MultiMedia1 Channel1",
3338 .info = msm_pcm_channel_input_be_info,
3339 .get = msm_pcm_channel_input_be_get,
3340 .put = msm_pcm_channel_input_be_put,
3341 .private_value = (unsigned long)&(mm1_ch1_enum)
3342 },
3343 {
3344 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3345 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3346 .name = "MultiMedia1 Channel2",
3347 .info = msm_pcm_channel_input_be_info,
3348 .get = msm_pcm_channel_input_be_get,
3349 .put = msm_pcm_channel_input_be_put,
3350 .private_value = (unsigned long)&(mm1_ch2_enum)
3351 },
3352 {
3353 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3354 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3355 .name = "MultiMedia1 Channel3",
3356 .info = msm_pcm_channel_input_be_info,
3357 .get = msm_pcm_channel_input_be_get,
3358 .put = msm_pcm_channel_input_be_put,
3359 .private_value = (unsigned long)&(mm1_ch3_enum)
3360 },
3361 {
3362 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3363 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3364 .name = "MultiMedia1 Channel4",
3365 .info = msm_pcm_channel_input_be_info,
3366 .get = msm_pcm_channel_input_be_get,
3367 .put = msm_pcm_channel_input_be_put,
3368 .private_value = (unsigned long)&(mm1_ch4_enum)
3369 },
3370 {
3371 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3372 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3373 .name = "MultiMedia1 Channel5",
3374 .info = msm_pcm_channel_input_be_info,
3375 .get = msm_pcm_channel_input_be_get,
3376 .put = msm_pcm_channel_input_be_put,
3377 .private_value = (unsigned long)&(mm1_ch5_enum)
3378 },
3379 {
3380 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3381 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3382 .name = "MultiMedia1 Channel6",
3383 .info = msm_pcm_channel_input_be_info,
3384 .get = msm_pcm_channel_input_be_get,
3385 .put = msm_pcm_channel_input_be_put,
3386 .private_value = (unsigned long)&(mm1_ch6_enum)
3387 },
3388 {
3389 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3390 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3391 .name = "MultiMedia1 Channel7",
3392 .info = msm_pcm_channel_input_be_info,
3393 .get = msm_pcm_channel_input_be_get,
3394 .put = msm_pcm_channel_input_be_put,
3395 .private_value = (unsigned long)&(mm1_ch7_enum)
3396 },
3397 {
3398 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3399 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3400 .name = "MultiMedia1 Channel8",
3401 .info = msm_pcm_channel_input_be_info,
3402 .get = msm_pcm_channel_input_be_get,
3403 .put = msm_pcm_channel_input_be_put,
3404 .private_value = (unsigned long)&(mm1_ch8_enum)
3405 },
3406};
3407static int msm_ec_ref_ch_get(struct snd_kcontrol *kcontrol,
3408 struct snd_ctl_elem_value *ucontrol)
3409{
3410 ucontrol->value.integer.value[0] = msm_ec_ref_ch;
3411 pr_debug("%s: msm_ec_ref_ch = %ld\n", __func__,
3412 ucontrol->value.integer.value[0]);
3413 return 0;
3414}
3415
3416static int msm_ec_ref_ch_put(struct snd_kcontrol *kcontrol,
3417 struct snd_ctl_elem_value *ucontrol)
3418{
3419 msm_ec_ref_ch = ucontrol->value.integer.value[0];
3420 pr_debug("%s: msm_ec_ref_ch = %d\n", __func__, msm_ec_ref_ch);
3421 adm_num_ec_ref_rx_chans(msm_ec_ref_ch);
3422 return 0;
3423}
3424
3425static const char *const ec_ref_ch_text[] = {"Zero", "One", "Two", "Three",
3426 "Four", "Five", "Six", "Seven", "Eight"};
3427
3428static int msm_ec_ref_bit_format_get(struct snd_kcontrol *kcontrol,
3429 struct snd_ctl_elem_value *ucontrol)
3430{
3431 switch (msm_ec_ref_bit_format) {
3432 case SNDRV_PCM_FORMAT_S24_LE:
3433 ucontrol->value.integer.value[0] = 2;
3434 break;
3435 case SNDRV_PCM_FORMAT_S16_LE:
3436 ucontrol->value.integer.value[0] = 1;
3437 break;
3438 default:
3439 ucontrol->value.integer.value[0] = 0;
3440 break;
3441 }
3442 pr_debug("%s: msm_ec_ref_bit_format = %ld\n",
3443 __func__, ucontrol->value.integer.value[0]);
3444 return 0;
3445}
3446
3447static int msm_ec_ref_bit_format_put(struct snd_kcontrol *kcontrol,
3448 struct snd_ctl_elem_value *ucontrol)
3449{
3450 u16 bit_width = 0;
3451
3452 switch (ucontrol->value.integer.value[0]) {
3453 case 2:
3454 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S24_LE;
3455 break;
3456 case 1:
3457 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
3458 break;
3459 default:
3460 msm_ec_ref_bit_format = 0;
3461 break;
3462 }
3463
3464 if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S16_LE)
3465 bit_width = 16;
3466 else if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S24_LE)
3467 bit_width = 24;
3468
3469 pr_debug("%s: msm_ec_ref_bit_format = %d\n",
3470 __func__, msm_ec_ref_bit_format);
3471 adm_ec_ref_rx_bit_width(bit_width);
3472 return 0;
3473}
3474
3475static char const *ec_ref_bit_format_text[] = {"0", "S16_LE", "S24_LE"};
3476
3477static int msm_ec_ref_rate_get(struct snd_kcontrol *kcontrol,
3478 struct snd_ctl_elem_value *ucontrol)
3479{
3480 ucontrol->value.integer.value[0] = msm_ec_ref_sampling_rate;
3481 pr_debug("%s: msm_ec_ref_sampling_rate = %ld\n",
3482 __func__, ucontrol->value.integer.value[0]);
3483 return 0;
3484}
3485
3486static int msm_ec_ref_rate_put(struct snd_kcontrol *kcontrol,
3487 struct snd_ctl_elem_value *ucontrol)
3488{
3489 switch (ucontrol->value.integer.value[0]) {
3490 case 0:
3491 msm_ec_ref_sampling_rate = 0;
3492 break;
3493 case 1:
3494 msm_ec_ref_sampling_rate = 8000;
3495 break;
3496 case 2:
3497 msm_ec_ref_sampling_rate = 16000;
3498 break;
3499 case 3:
3500 msm_ec_ref_sampling_rate = 32000;
3501 break;
3502 case 4:
3503 msm_ec_ref_sampling_rate = 44100;
3504 break;
3505 case 5:
3506 msm_ec_ref_sampling_rate = 48000;
3507 break;
3508 case 6:
3509 msm_ec_ref_sampling_rate = 96000;
3510 break;
3511 case 7:
3512 msm_ec_ref_sampling_rate = 192000;
3513 break;
3514 case 8:
3515 msm_ec_ref_sampling_rate = 384000;
3516 break;
3517 default:
3518 msm_ec_ref_sampling_rate = 48000;
3519 break;
3520 }
3521 pr_debug("%s: msm_ec_ref_sampling_rate = %d\n",
3522 __func__, msm_ec_ref_sampling_rate);
3523 adm_ec_ref_rx_sampling_rate(msm_ec_ref_sampling_rate);
3524 return 0;
3525}
3526
3527static const char *const ec_ref_rate_text[] = {"0", "8000", "16000",
3528 "32000", "44100", "48000", "96000", "192000", "384000"};
3529
3530static const struct soc_enum msm_route_ec_ref_params_enum[] = {
3531 SOC_ENUM_SINGLE_EXT(9, ec_ref_ch_text),
3532 SOC_ENUM_SINGLE_EXT(3, ec_ref_bit_format_text),
3533 SOC_ENUM_SINGLE_EXT(9, ec_ref_rate_text),
3534};
3535
3536static const struct snd_kcontrol_new ec_ref_param_controls[] = {
3537 SOC_ENUM_EXT("EC Reference Channels", msm_route_ec_ref_params_enum[0],
3538 msm_ec_ref_ch_get, msm_ec_ref_ch_put),
3539 SOC_ENUM_EXT("EC Reference Bit Format", msm_route_ec_ref_params_enum[1],
3540 msm_ec_ref_bit_format_get, msm_ec_ref_bit_format_put),
3541 SOC_ENUM_EXT("EC Reference SampleRate", msm_route_ec_ref_params_enum[2],
3542 msm_ec_ref_rate_get, msm_ec_ref_rate_put),
3543};
3544
3545static int msm_routing_ec_ref_rx_get(struct snd_kcontrol *kcontrol,
3546 struct snd_ctl_elem_value *ucontrol)
3547{
3548 pr_debug("%s: ec_ref_rx = %d", __func__, msm_route_ec_ref_rx);
3549 mutex_lock(&routing_lock);
3550 ucontrol->value.integer.value[0] = msm_route_ec_ref_rx;
3551 mutex_unlock(&routing_lock);
3552 return 0;
3553}
3554
3555static int msm_routing_ec_ref_rx_put(struct snd_kcontrol *kcontrol,
3556 struct snd_ctl_elem_value *ucontrol)
3557{
3558 int ec_ref_port_id;
Asish Bhattacharya34504582017-08-08 12:55:01 +05303559 struct snd_soc_dapm_widget *widget =
3560 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303561 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3562 struct snd_soc_dapm_update *update = NULL;
3563
3564
3565 mutex_lock(&routing_lock);
3566 switch (ucontrol->value.integer.value[0]) {
3567 case 0:
3568 msm_route_ec_ref_rx = 0;
3569 ec_ref_port_id = AFE_PORT_INVALID;
3570 break;
3571 case 1:
3572 msm_route_ec_ref_rx = 1;
3573 ec_ref_port_id = SLIMBUS_0_RX;
3574 break;
3575 case 2:
3576 msm_route_ec_ref_rx = 2;
3577 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_RX;
3578 break;
3579 case 3:
3580 msm_route_ec_ref_rx = 3;
3581 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3582 break;
3583 case 4:
3584 msm_route_ec_ref_rx = 4;
3585 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3586 break;
3587 case 5:
3588 msm_route_ec_ref_rx = 5;
3589 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3590 break;
3591 case 6:
3592 msm_route_ec_ref_rx = 6;
3593 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3594 break;
3595 case 7:
3596 msm_route_ec_ref_rx = 7;
3597 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_RX;
3598 break;
3599 case 9:
3600 msm_route_ec_ref_rx = 9;
3601 ec_ref_port_id = SLIMBUS_5_RX;
3602 break;
3603 case 10:
3604 msm_route_ec_ref_rx = 10;
3605 ec_ref_port_id = SLIMBUS_1_TX;
3606 break;
3607 case 11:
3608 msm_route_ec_ref_rx = 11;
3609 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_TX_1;
3610 break;
3611 case 12:
3612 msm_route_ec_ref_rx = 12;
3613 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX;
3614 break;
3615 case 13:
3616 msm_route_ec_ref_rx = 13;
3617 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_1;
3618 break;
3619 case 14:
3620 msm_route_ec_ref_rx = 14;
3621 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_2;
3622 break;
3623 case 15:
3624 msm_route_ec_ref_rx = 15;
3625 ec_ref_port_id = SLIMBUS_6_RX;
3626 break;
3627 case 16:
3628 msm_route_ec_ref_rx = 16;
3629 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_RX;
3630 break;
3631 case 17:
3632 msm_route_ec_ref_rx = 17;
3633 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_RX;
3634 break;
3635 case 18:
3636 msm_route_ec_ref_rx = 18;
3637 ec_ref_port_id = AFE_PORT_ID_TERTIARY_TDM_TX;
3638 break;
3639 case 19:
3640 msm_route_ec_ref_rx = 19;
3641 ec_ref_port_id = AFE_PORT_ID_USB_RX;
3642 break;
3643 case 20:
3644 msm_route_ec_ref_rx = 20;
3645 ec_ref_port_id = AFE_PORT_ID_INT0_MI2S_RX;
3646 break;
3647 case 21:
3648 msm_route_ec_ref_rx = 21;
3649 ec_ref_port_id = AFE_PORT_ID_INT4_MI2S_RX;
3650 break;
3651 case 22:
3652 msm_route_ec_ref_rx = 22;
3653 ec_ref_port_id = AFE_PORT_ID_INT3_MI2S_TX;
3654 break;
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003655 case 23:
3656 msm_route_ec_ref_rx = 23;
3657 ec_ref_port_id = AFE_PORT_ID_HDMI_OVER_DP_RX;
3658 break;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303659 default:
3660 msm_route_ec_ref_rx = 0; /* NONE */
3661 pr_err("%s EC ref rx %ld not valid\n",
3662 __func__, ucontrol->value.integer.value[0]);
3663 ec_ref_port_id = AFE_PORT_INVALID;
3664 break;
3665 }
3666 adm_ec_ref_rx_id(ec_ref_port_id);
3667 pr_debug("%s: msm_route_ec_ref_rx = %d\n",
3668 __func__, msm_route_ec_ref_rx);
3669 mutex_unlock(&routing_lock);
3670 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol,
3671 msm_route_ec_ref_rx, e, update);
3672 return 0;
3673}
3674
3675static const char *const ec_ref_rx[] = { "None", "SLIM_RX", "I2S_RX",
3676 "PRI_MI2S_TX", "SEC_MI2S_TX",
3677 "TERT_MI2S_TX", "QUAT_MI2S_TX", "SEC_I2S_RX", "PROXY_RX",
3678 "SLIM_5_RX", "SLIM_1_TX", "QUAT_TDM_TX_1",
3679 "QUAT_TDM_RX_0", "QUAT_TDM_RX_1", "QUAT_TDM_RX_2", "SLIM_6_RX",
3680 "TERT_MI2S_RX", "QUAT_MI2S_RX", "TERT_TDM_TX_0", "USB_AUDIO_RX",
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003681 "INT0_MI2S_RX", "INT4_MI2S_RX", "INT3_MI2S_TX", "DISPLAY_PORT"};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303682
3683static const struct soc_enum msm_route_ec_ref_rx_enum[] = {
3684 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ec_ref_rx), ec_ref_rx),
3685};
3686
3687static const struct snd_kcontrol_new ext_ec_ref_mux_ul1 =
3688 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL1 MUX Mux",
3689 msm_route_ec_ref_rx_enum[0],
3690 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3691
3692static const struct snd_kcontrol_new ext_ec_ref_mux_ul2 =
3693 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL2 MUX Mux",
3694 msm_route_ec_ref_rx_enum[0],
3695 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3696
3697static const struct snd_kcontrol_new ext_ec_ref_mux_ul3 =
3698 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL3 MUX Mux",
3699 msm_route_ec_ref_rx_enum[0],
3700 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3701
3702static const struct snd_kcontrol_new ext_ec_ref_mux_ul4 =
3703 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL4 MUX Mux",
3704 msm_route_ec_ref_rx_enum[0],
3705 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3706
3707static const struct snd_kcontrol_new ext_ec_ref_mux_ul5 =
3708 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL5 MUX Mux",
3709 msm_route_ec_ref_rx_enum[0],
3710 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3711
3712static const struct snd_kcontrol_new ext_ec_ref_mux_ul6 =
3713 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL6 MUX Mux",
3714 msm_route_ec_ref_rx_enum[0],
3715 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3716
3717static const struct snd_kcontrol_new ext_ec_ref_mux_ul8 =
3718 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL8 MUX Mux",
3719 msm_route_ec_ref_rx_enum[0],
3720 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3721
3722static const struct snd_kcontrol_new ext_ec_ref_mux_ul9 =
3723 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL9 MUX Mux",
3724 msm_route_ec_ref_rx_enum[0],
3725 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3726
Asish Bhattacharya34504582017-08-08 12:55:01 +05303727static const struct snd_kcontrol_new ext_ec_ref_mux_ul16 =
3728 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL16 MUX Mux",
3729 msm_route_ec_ref_rx_enum[0],
3730 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3731
Laxminath Kasam38070be2017-08-17 18:21:59 +05303732static const struct snd_kcontrol_new ext_ec_ref_mux_ul10 =
3733 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL10 MUX Mux",
3734 msm_route_ec_ref_rx_enum[0],
3735 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3736
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303737static const struct snd_kcontrol_new ext_ec_ref_mux_ul17 =
3738 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL17 MUX Mux",
3739 msm_route_ec_ref_rx_enum[0],
3740 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3741
3742static const struct snd_kcontrol_new ext_ec_ref_mux_ul18 =
3743 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL18 MUX Mux",
3744 msm_route_ec_ref_rx_enum[0],
3745 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3746
3747static const struct snd_kcontrol_new ext_ec_ref_mux_ul19 =
3748 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL19 MUX Mux",
3749 msm_route_ec_ref_rx_enum[0],
3750 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3751
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05303752static const struct snd_kcontrol_new ext_ec_ref_mux_ul28 =
3753 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL28 MUX Mux",
3754 msm_route_ec_ref_rx_enum[0],
3755 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3756
3757static const struct snd_kcontrol_new ext_ec_ref_mux_ul29 =
3758 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL29 MUX Mux",
3759 msm_route_ec_ref_rx_enum[0],
3760 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3761
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303762static int msm_routing_ext_ec_get(struct snd_kcontrol *kcontrol,
3763 struct snd_ctl_elem_value *ucontrol)
3764{
3765 pr_debug("%s: ext_ec_ref_rx = %x\n", __func__, msm_route_ext_ec_ref);
3766
3767 mutex_lock(&routing_lock);
3768 ucontrol->value.integer.value[0] = msm_route_ext_ec_ref;
3769 mutex_unlock(&routing_lock);
3770 return 0;
3771}
3772
3773static int msm_routing_ext_ec_put(struct snd_kcontrol *kcontrol,
3774 struct snd_ctl_elem_value *ucontrol)
3775{
Asish Bhattacharya34504582017-08-08 12:55:01 +05303776 struct snd_soc_dapm_widget *widget =
3777 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303778 int mux = ucontrol->value.enumerated.item[0];
3779 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3780 int ret = 1;
3781 bool state = true;
3782 uint16_t ext_ec_ref_port_id;
3783 struct snd_soc_dapm_update *update = NULL;
3784
3785 if (mux >= e->items) {
3786 pr_err("%s: Invalid mux value %d\n", __func__, mux);
3787 return -EINVAL;
3788 }
3789
3790 mutex_lock(&routing_lock);
3791 msm_route_ext_ec_ref = ucontrol->value.integer.value[0];
3792
3793 switch (msm_route_ext_ec_ref) {
3794 case EXT_EC_REF_PRI_MI2S_TX:
3795 ext_ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3796 break;
3797 case EXT_EC_REF_SEC_MI2S_TX:
3798 ext_ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3799 break;
3800 case EXT_EC_REF_TERT_MI2S_TX:
3801 ext_ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3802 break;
3803 case EXT_EC_REF_QUAT_MI2S_TX:
3804 ext_ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3805 break;
3806 case EXT_EC_REF_QUIN_MI2S_TX:
3807 ext_ec_ref_port_id = AFE_PORT_ID_QUINARY_MI2S_TX;
3808 break;
3809 case EXT_EC_REF_SLIM_1_TX:
3810 ext_ec_ref_port_id = SLIMBUS_1_TX;
3811 break;
3812 case EXT_EC_REF_NONE:
3813 default:
3814 ext_ec_ref_port_id = AFE_PORT_INVALID;
3815 state = false;
3816 break;
3817 }
3818
3819 pr_debug("%s: val = %d ext_ec_ref_port_id = 0x%0x state = %d\n",
3820 __func__, msm_route_ext_ec_ref, ext_ec_ref_port_id, state);
3821
3822 if (!voc_set_ext_ec_ref_port_id(ext_ec_ref_port_id, state)) {
3823 mutex_unlock(&routing_lock);
3824 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol, mux, e,
3825 update);
3826 } else {
3827 ret = -EINVAL;
3828 mutex_unlock(&routing_lock);
3829 }
3830 return ret;
3831}
3832
3833static const char * const ext_ec_ref_rx[] = {"NONE", "PRI_MI2S_TX",
3834 "SEC_MI2S_TX", "TERT_MI2S_TX",
3835 "QUAT_MI2S_TX", "QUIN_MI2S_TX",
3836 "SLIM_1_TX"};
3837
3838static const struct soc_enum msm_route_ext_ec_ref_rx_enum[] = {
3839 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ext_ec_ref_rx), ext_ec_ref_rx),
3840};
3841
3842static const struct snd_kcontrol_new voc_ext_ec_mux =
3843 SOC_DAPM_ENUM_EXT("VOC_EXT_EC MUX Mux", msm_route_ext_ec_ref_rx_enum[0],
3844 msm_routing_ext_ec_get, msm_routing_ext_ec_put);
3845
3846
3847static const struct snd_kcontrol_new pri_i2s_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08003848 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
3849 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303850 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3851 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003852 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
3853 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303854 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3855 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003856 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
3857 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303858 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3859 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003860 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
3861 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303862 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3863 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003864 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
3865 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303866 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3867 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003868 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
3869 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303870 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3871 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003872 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
3873 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303874 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3875 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003876 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
3877 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303878 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3879 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003880 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
3881 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303882 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3883 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003884 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
3885 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303886 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3887 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003888 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
3889 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303890 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3891 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003892 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
3893 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303894 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3895 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003896 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
3897 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303898 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3899 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003900 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
3901 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303902 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3903 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003904 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
3905 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303906 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3907 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003908 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
3909 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303910 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3911 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003912 SOC_DOUBLE_EXT("MultiMedia17", SND_SOC_NOPM,
3913 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303914 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3915 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003916 SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
3917 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303918 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3919 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003920 SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
3921 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303922 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3923 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003924 SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
3925 MSM_BACKEND_DAI_PRI_I2S_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05303926 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
3927 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003928 SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
3929 MSM_BACKEND_DAI_PRI_I2S_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05303930 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
3931 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303932};
3933
3934static const struct snd_kcontrol_new sec_i2s_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08003935 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
3936 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303937 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3938 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003939 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
3940 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303941 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3942 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003943 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
3944 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303945 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3946 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003947 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
3948 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303949 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3950 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003951 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
3952 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303953 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3954 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003955 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
3956 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303957 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3958 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003959 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
3960 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303961 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3962 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003963 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
3964 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303965 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3966 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003967 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
3968 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303969 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3970 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003971 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
3972 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303973 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3974 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003975 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
3976 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303977 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3978 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003979 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
3980 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303981 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3982 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003983 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
3984 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303985 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3986 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003987 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
3988 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303989 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3990 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003991 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
3992 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303993 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3994 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003995 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
3996 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303997 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3998 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08003999 SOC_DOUBLE_EXT("MultiMedia17", SND_SOC_NOPM,
4000 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304001 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4002 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004003 SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
4004 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304005 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4006 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004007 SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
4008 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304009 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4010 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004011 SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
4012 MSM_BACKEND_DAI_SEC_I2S_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05304013 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4014 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004015 SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
4016 MSM_BACKEND_DAI_SEC_I2S_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05304017 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4018 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304019};
4020
4021static const struct snd_kcontrol_new spdif_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08004022 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
4023 MSM_BACKEND_DAI_SPDIF_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304024 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4025 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004026 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
4027 MSM_BACKEND_DAI_SPDIF_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304028 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4029 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004030 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
4031 MSM_BACKEND_DAI_SPDIF_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304032 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4033 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004034 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
4035 MSM_BACKEND_DAI_SPDIF_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304036 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4037 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004038 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
4039 MSM_BACKEND_DAI_SPDIF_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304040 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4041 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004042 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
4043 MSM_BACKEND_DAI_SPDIF_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304044 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4045 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004046 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
4047 MSM_BACKEND_DAI_SPDIF_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304048 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4049 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004050 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
4051 MSM_BACKEND_DAI_SPDIF_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304052 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4053 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004054 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
4055 MSM_BACKEND_DAI_SPDIF_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304056 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4057 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004058 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
4059 MSM_BACKEND_DAI_SPDIF_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304060 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4061 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004062 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
4063 MSM_BACKEND_DAI_SPDIF_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304064 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4065 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004066 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
4067 MSM_BACKEND_DAI_SPDIF_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304068 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4069 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004070 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
4071 MSM_BACKEND_DAI_SPDIF_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304072 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4073 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004074 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
4075 MSM_BACKEND_DAI_SPDIF_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304076 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4077 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004078 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
4079 MSM_BACKEND_DAI_SPDIF_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304080 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4081 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004082 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
4083 MSM_BACKEND_DAI_SPDIF_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304084 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4085 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004086 SOC_DOUBLE_EXT("MultiMedia17", SND_SOC_NOPM,
4087 MSM_BACKEND_DAI_SPDIF_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304088 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4089 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004090 SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
4091 MSM_BACKEND_DAI_SPDIF_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304092 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4093 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004094 SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
4095 MSM_BACKEND_DAI_SPDIF_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304096 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4097 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004098 SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
4099 MSM_BACKEND_DAI_SPDIF_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05304100 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4101 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004102 SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
4103 MSM_BACKEND_DAI_SPDIF_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05304104 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4105 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304106};
4107
4108static const struct snd_kcontrol_new slimbus_2_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08004109 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
4110 MSM_BACKEND_DAI_SLIMBUS_2_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304111 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4112 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004113 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
4114 MSM_BACKEND_DAI_SLIMBUS_2_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304115 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4116 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004117 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
4118 MSM_BACKEND_DAI_SLIMBUS_2_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304119 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4120 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004121 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
4122 MSM_BACKEND_DAI_SLIMBUS_2_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304123 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4124 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004125 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
4126 MSM_BACKEND_DAI_SLIMBUS_2_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304127 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4128 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004129 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
4130 MSM_BACKEND_DAI_SLIMBUS_2_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304131 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4132 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004133 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
4134 MSM_BACKEND_DAI_SLIMBUS_2_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304135 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4136 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004137 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
4138 MSM_BACKEND_DAI_SLIMBUS_2_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304139 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4140 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004141 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
4142 MSM_BACKEND_DAI_SLIMBUS_2_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304143 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4144 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004145 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
4146 MSM_BACKEND_DAI_SLIMBUS_2_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304147 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4148 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004149 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
4150 MSM_BACKEND_DAI_SLIMBUS_2_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304151 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4152 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004153 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
4154 MSM_BACKEND_DAI_SLIMBUS_2_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304155 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4156 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004157 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
4158 MSM_BACKEND_DAI_SLIMBUS_2_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304159 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4160 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004161 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
4162 MSM_BACKEND_DAI_SLIMBUS_2_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304163 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4164 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004165 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
4166 MSM_BACKEND_DAI_SLIMBUS_2_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304167 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4168 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004169 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
4170 MSM_BACKEND_DAI_SLIMBUS_2_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304171 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4172 msm_routing_put_audio_mixer),
4173};
4174
4175static const struct snd_kcontrol_new slimbus_5_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08004176 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
4177 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304178 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4179 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004180 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
4181 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304182 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4183 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004184 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
4185 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304186 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4187 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004188 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
4189 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304190 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4191 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004192 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
4193 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304194 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4195 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004196 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
4197 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304198 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4199 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004200 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
4201 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304202 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4203 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004204 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
4205 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304206 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4207 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004208 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
4209 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304210 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4211 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004212 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
4213 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304214 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4215 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004216 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
4217 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304218 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4219 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004220 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
4221 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304222 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4223 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004224 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
4225 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304226 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4227 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004228 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
4229 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304230 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4231 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004232 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
4233 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304234 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4235 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004236 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
4237 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304238 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4239 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004240 SOC_DOUBLE_EXT("MultiMedia17", SND_SOC_NOPM,
4241 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304242 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4243 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004244 SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
4245 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304246 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4247 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004248 SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
4249 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304250 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4251 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004252 SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
4253 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05304254 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4255 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004256 SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
4257 MSM_BACKEND_DAI_SLIMBUS_5_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05304258 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4259 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304260};
4261
4262static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08004263 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
4264 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304265 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4266 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004267 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
4268 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304269 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4270 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004271 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
4272 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304273 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4274 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004275 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
4276 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304277 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4278 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004279 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
4280 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304281 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4282 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004283 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
4284 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304285 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4286 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004287 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
4288 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304289 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4290 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004291 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
4292 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304293 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4294 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004295 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
4296 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304297 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4298 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004299 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
4300 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304301 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4302 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004303 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
4304 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304305 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4306 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004307 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
4308 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304309 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4310 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004311 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
4312 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304313 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4314 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004315 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
4316 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304317 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4318 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004319 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
4320 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304321 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4322 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004323 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
4324 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304325 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4326 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004327 SOC_DOUBLE_EXT("MultiMedia17", SND_SOC_NOPM,
4328 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304329 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4330 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004331 SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
4332 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304333 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4334 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004335 SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
4336 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304337 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4338 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004339 SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
4340 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05304341 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4342 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004343 SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
4344 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05304345 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4346 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304347};
4348
4349static const struct snd_kcontrol_new mi2s_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08004350 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
4351 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304352 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4353 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004354 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
4355 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304356 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4357 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004358 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
4359 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304360 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4361 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004362 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
4363 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304364 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4365 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004366 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
4367 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304368 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4369 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004370 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
4371 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304372 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4373 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004374 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
4375 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304376 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4377 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004378 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
4379 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304380 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4381 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004382 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
4383 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304384 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4385 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004386 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
4387 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304388 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4389 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004390 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
4391 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304392 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4393 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004394 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
4395 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304396 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4397 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004398 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
4399 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304400 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4401 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004402 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
4403 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304404 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4405 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004406 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
4407 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304408 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4409 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004410 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
4411 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304412 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4413 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004414 SOC_DOUBLE_EXT("MultiMedia17", SND_SOC_NOPM,
4415 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304416 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4417 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004418 SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
4419 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304420 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4421 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004422 SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
4423 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304424 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4425 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004426 SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
4427 MSM_BACKEND_DAI_MI2S_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05304428 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4429 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004430 SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
4431 MSM_BACKEND_DAI_MI2S_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05304432 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4433 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304434};
4435
4436static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08004437 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
4438 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304439 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4440 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004441 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
4442 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304443 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4444 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004445 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
4446 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304447 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4448 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004449 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
4450 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304451 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4452 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004453 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
4454 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304455 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4456 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004457 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
4458 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304459 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4460 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004461 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
4462 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304463 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4464 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004465 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
4466 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304467 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4468 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004469 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
4470 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304471 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4472 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004473 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
4474 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304475 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4476 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004477 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
4478 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304479 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4480 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004481 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
4482 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304483 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4484 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004485 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
4486 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304487 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4488 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004489 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
4490 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304491 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4492 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004493 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
4494 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304495 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4496 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004497 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
4498 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304499 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4500 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004501 SOC_DOUBLE_EXT("MultiMedia17", SND_SOC_NOPM,
4502 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304503 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4504 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004505 SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
4506 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304507 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4508 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004509 SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
4510 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304511 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4512 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004513 SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
4514 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05304515 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4516 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004517 SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
4518 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05304519 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4520 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304521};
4522
4523static const struct snd_kcontrol_new quinary_mi2s_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08004524 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
4525 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304526 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4527 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004528 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
4529 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304530 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4531 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004532 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
4533 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304534 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4535 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004536 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
4537 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304538 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4539 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004540 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
4541 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304542 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4543 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004544 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
4545 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304546 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4547 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004548 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
4549 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304550 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4551 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004552 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
4553 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304554 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4555 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004556 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
4557 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304558 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4559 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004560 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
4561 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304562 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4563 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004564 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
4565 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304566 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4567 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004568 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
4569 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304570 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4571 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004572 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
4573 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304574 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4575 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004576 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
4577 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304578 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4579 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004580 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
4581 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304582 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4583 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004584 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
4585 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304586 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4587 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004588 SOC_DOUBLE_EXT("MultiMedia17", SND_SOC_NOPM,
4589 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304590 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4591 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004592 SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
4593 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304594 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4595 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004596 SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
4597 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304598 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4599 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004600 SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
4601 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05304602 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4603 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004604 SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
4605 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05304606 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4607 msm_routing_put_audio_mixer),
4608
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304609};
4610
4611static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08004612 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
4613 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304614 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4615 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004616 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
4617 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304618 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4619 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004620 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
4621 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304622 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4623 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004624 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
4625 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304626 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4627 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004628 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
4629 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304630 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4631 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004632 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
4633 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304634 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4635 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004636 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
4637 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304638 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4639 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004640 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
4641 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304642 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4643 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004644 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
4645 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304646 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4647 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004648 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
4649 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304650 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4651 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004652 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
4653 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304654 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4655 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004656 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
4657 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304658 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4659 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004660 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
4661 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304662 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4663 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004664 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
4665 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304666 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4667 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004668 SOC_DOUBLE_EXT("MultiMedia17", SND_SOC_NOPM,
4669 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304670 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4671 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004672 SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
4673 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304674 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4675 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004676 SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
4677 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304678 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4679 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004680 SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
4681 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05304682 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4683 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004684 SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
4685 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05304686 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4687 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304688};
4689
4690static const struct snd_kcontrol_new secondary_mi2s_rx2_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08004691 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
4692 MSM_BACKEND_DAI_SECONDARY_MI2S_RX_SD1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304693 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4694 msm_routing_put_audio_mixer),
4695};
4696
4697static const struct snd_kcontrol_new secondary_mi2s_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08004698 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
4699 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304700 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4701 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004702 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
4703 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304704 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4705 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004706 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
4707 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304708 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4709 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004710 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
4711 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304712 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4713 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004714 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
4715 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304716 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4717 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004718 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
4719 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304720 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4721 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004722 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
4723 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304724 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4725 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004726 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
4727 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304728 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4729 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004730 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
4731 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304732 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4733 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004734 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
4735 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304736 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4737 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004738 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
4739 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304740 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4741 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004742 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
4743 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304744 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4745 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004746 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
4747 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304748 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4749 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004750 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
4751 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304752 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4753 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004754 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
4755 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304756 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4757 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004758 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
4759 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304760 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4761 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004762 SOC_DOUBLE_EXT("MultiMedia17", SND_SOC_NOPM,
4763 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304764 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4765 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004766 SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
4767 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304768 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4769 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004770 SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
4771 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304772 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4773 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004774 SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
4775 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05304776 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4777 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004778 SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
4779 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05304780 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4781 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304782};
4783
4784static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08004785 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
4786 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304787 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4788 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004789 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
4790 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304791 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4792 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004793 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
4794 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304795 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4796 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004797 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
4798 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304799 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4800 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004801 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
4802 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304803 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4804 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004805 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
4806 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304807 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4808 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004809 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
4810 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304811 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4812 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004813 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
4814 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304815 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4816 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004817 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
4818 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304819 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4820 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004821 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
4822 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304823 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4824 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004825 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
4826 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304827 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4828 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004829 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
4830 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304831 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4832 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004833 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
4834 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304835 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4836 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004837 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
4838 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304839 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4840 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004841 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
4842 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304843 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4844 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004845 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
4846 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304847 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4848 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004849 SOC_DOUBLE_EXT("MultiMedia17", SND_SOC_NOPM,
4850 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304851 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4852 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004853 SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
4854 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304855 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4856 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004857 SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
4858 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304859 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4860 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004861 SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
4862 MSM_BACKEND_DAI_PRI_MI2S_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05304863 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4864 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004865 SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
4866 MSM_BACKEND_DAI_PRI_MI2S_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05304867 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4868 msm_routing_put_audio_mixer),
4869
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304870};
4871
4872static const struct snd_kcontrol_new int0_mi2s_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08004873 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
4874 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304875 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4876 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004877 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
4878 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304879 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4880 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004881 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
4882 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304883 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4884 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004885 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
4886 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304887 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4888 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004889 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
4890 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304891 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4892 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004893 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
4894 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304895 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4896 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004897 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
4898 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304899 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4900 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004901 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
4902 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304903 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4904 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004905 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
4906 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304907 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4908 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004909 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
4910 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304911 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4912 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004913 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
4914 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304915 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4916 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004917 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
4918 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304919 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4920 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004921 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
4922 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304923 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4924 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004925 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
4926 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304927 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4928 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004929 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
4930 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304931 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4932 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004933 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
4934 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304935 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4936 msm_routing_put_audio_mixer),
4937};
4938
4939static const struct snd_kcontrol_new int4_mi2s_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08004940 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
4941 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304942 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4943 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004944 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
4945 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304946 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4947 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004948 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
4949 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304950 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4951 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004952 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
4953 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304954 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4955 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004956 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
4957 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304958 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4959 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004960 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
4961 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304962 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4963 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004964 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
4965 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304966 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4967 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004968 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
4969 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304970 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4971 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004972 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
4973 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304974 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4975 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004976 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
4977 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304978 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4979 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004980 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
4981 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304982 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4983 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004984 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
4985 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304986 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4987 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004988 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
4989 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304990 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4991 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004992 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
4993 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304994 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4995 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08004996 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
4997 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304998 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4999 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005000 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
5001 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305002 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5003 msm_routing_put_audio_mixer),
5004};
5005
5006static const struct snd_kcontrol_new hdmi_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08005007 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
5008 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305009 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5010 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005011 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
5012 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305013 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5014 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005015 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
5016 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305017 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5018 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005019 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
5020 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305021 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5022 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005023 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
5024 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305025 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5026 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005027 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
5028 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305029 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5030 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005031 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
5032 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305033 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5034 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005035 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
5036 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305037 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5038 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005039 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
5040 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305041 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5042 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005043 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
5044 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305045 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5046 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005047 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
5048 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305049 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5050 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005051 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
5052 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305053 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5054 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005055 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
5056 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305057 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5058 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005059 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
5060 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305061 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5062 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005063 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
5064 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305065 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5066 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005067 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
5068 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305069 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5070 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005071 SOC_DOUBLE_EXT("MultiMedia17", SND_SOC_NOPM,
5072 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305073 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5074 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005075 SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
5076 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305077 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5078 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005079 SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
5080 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305081 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5082 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005083 SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
5084 MSM_BACKEND_DAI_HDMI_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05305085 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5086 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005087 SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
5088 MSM_BACKEND_DAI_HDMI_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05305089 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5090 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305091};
5092
5093static const struct snd_kcontrol_new display_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08005094 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
5095 MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305096 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5097 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005098 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
5099 MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305100 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5101 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005102 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
5103 MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305104 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5105 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005106 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
5107 MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305108 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5109 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005110 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
5111 MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305112 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5113 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005114 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
5115 MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305116 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5117 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005118 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
5119 MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305120 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5121 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005122 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
5123 MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305124 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5125 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005126 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
5127 MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305128 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5129 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005130 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
5131 MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305132 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5133 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005134 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
5135 MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305136 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5137 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005138 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
5139 MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305140 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5141 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005142 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
5143 MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305144 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5145 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005146 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
5147 MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305148 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5149 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005150 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
5151 MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305152 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5153 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005154 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
5155 MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305156 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5157 msm_routing_put_audio_mixer),
5158};
5159
5160 /* incall music delivery mixer */
5161static const struct snd_kcontrol_new incall_music_delivery_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08005162 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
5163 MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305164 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5165 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005166 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
5167 MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305168 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5169 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005170 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
5171 MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305172 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5173 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005174 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
5175 MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305176 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5177 msm_routing_put_audio_mixer),
5178};
5179
5180static const struct snd_kcontrol_new incall_music2_delivery_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08005181 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
5182 MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305183 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5184 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005185 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
5186 MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305187 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5188 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005189 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
5190 MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305191 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5192 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005193 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
5194 MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305195 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5196 msm_routing_put_audio_mixer),
5197};
5198
5199static const struct snd_kcontrol_new slimbus_4_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08005200 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
5201 MSM_BACKEND_DAI_SLIMBUS_4_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305202 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5203 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005204 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
5205 MSM_BACKEND_DAI_SLIMBUS_4_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305206 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5207 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005208 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
5209 MSM_BACKEND_DAI_SLIMBUS_4_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305210 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5211 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005212 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
5213 MSM_BACKEND_DAI_SLIMBUS_4_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305214 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5215 msm_routing_put_audio_mixer),
5216};
5217
5218static const struct snd_kcontrol_new slimbus_6_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08005219 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
5220 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305221 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5222 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005223 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
5224 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305225 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5226 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005227 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
5228 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305229 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5230 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005231 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
5232 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305233 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5234 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005235 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
5236 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305237 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5238 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005239 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
5240 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305241 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5242 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005243 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
5244 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305245 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5246 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005247 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
5248 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305249 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5250 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005251 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
5252 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305253 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5254 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005255 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
5256 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305257 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5258 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005259 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
5260 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305261 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5262 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005263 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
5264 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305265 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5266 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005267 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
5268 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305269 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5270 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005271 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
5272 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305273 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5274 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005275 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
5276 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305277 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5278 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005279 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
5280 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305281 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5282 msm_routing_put_audio_mixer),
5283};
5284
5285static const struct snd_kcontrol_new slimbus_7_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08005286 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
5287 MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305288 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5289 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005290 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
5291 MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305292 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5293 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005294 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
5295 MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305296 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5297 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005298 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
5299 MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305300 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5301 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005302 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
5303 MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305304 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5305 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005306 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
5307 MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305308 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5309 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005310 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
5311 MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305312 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5313 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005314 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
5315 MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305316 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5317 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005318 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
5319 MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305320 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5321 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005322 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
5323 MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305324 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5325 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005326 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
5327 MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305328 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5329 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005330 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
5331 MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305332 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5333 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005334 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
5335 MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305336 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5337 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005338 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
5339 MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305340 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5341 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005342 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
5343 MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305344 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5345 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005346 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
5347 MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305348 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5349 msm_routing_put_audio_mixer),
5350};
5351
5352static const struct snd_kcontrol_new usb_audio_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08005353 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
5354 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305355 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5356 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005357 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
5358 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305359 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5360 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005361 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
5362 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305363 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5364 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005365 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
5366 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305367 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5368 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005369 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
5370 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305371 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5372 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005373 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
5374 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305375 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5376 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005377 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
5378 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305379 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5380 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005381 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
5382 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305383 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5384 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005385 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
5386 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305387 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5388 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005389 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
5390 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305391 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5392 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005393 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
5394 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305395 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5396 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005397 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
5398 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305399 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5400 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005401 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
5402 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305403 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5404 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005405 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
5406 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305407 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5408 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005409 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
5410 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305411 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5412 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005413 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
5414 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305415 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5416 msm_routing_put_audio_mixer),
5417};
5418
5419static const struct snd_kcontrol_new int_bt_sco_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08005420 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
5421 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305422 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5423 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005424 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
5425 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305426 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5427 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005428 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
5429 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305430 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5431 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005432 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
5433 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305434 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5435 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005436 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
5437 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305438 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5439 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005440 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
5441 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305442 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5443 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005444 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
5445 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305446 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5447 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005448 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
5449 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305450 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5451 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005452 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
5453 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305454 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5455 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005456 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
5457 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305458 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5459 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005460 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
5461 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305462 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5463 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005464 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
5465 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305466 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5467 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005468 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
5469 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305470 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5471 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005472 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
5473 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305474 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5475 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005476 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
5477 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305478 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5479 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005480 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
5481 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305482 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5483 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005484 SOC_DOUBLE_EXT("MultiMedia17", SND_SOC_NOPM,
5485 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305486 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5487 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005488 SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
5489 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305490 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5491 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005492 SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
5493 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305494 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5495 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005496 SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
5497 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05305498 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5499 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005500 SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
5501 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05305502 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5503 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305504};
5505
5506static const struct snd_kcontrol_new int_bt_a2dp_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08005507 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
5508 MSM_BACKEND_DAI_INT_BT_A2DP_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305509 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5510 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005511 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
5512 MSM_BACKEND_DAI_INT_BT_A2DP_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305513 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5514 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005515 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
5516 MSM_BACKEND_DAI_INT_BT_A2DP_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305517 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5518 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005519 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
5520 MSM_BACKEND_DAI_INT_BT_A2DP_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305521 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5522 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005523 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
5524 MSM_BACKEND_DAI_INT_BT_A2DP_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305525 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5526 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005527 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
5528 MSM_BACKEND_DAI_INT_BT_A2DP_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305529 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5530 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005531 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
5532 MSM_BACKEND_DAI_INT_BT_A2DP_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305533 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5534 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005535 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
5536 MSM_BACKEND_DAI_INT_BT_A2DP_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305537 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5538 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005539 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
5540 MSM_BACKEND_DAI_INT_BT_A2DP_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305541 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5542 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005543 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
5544 MSM_BACKEND_DAI_INT_BT_A2DP_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305545 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5546 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005547 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
5548 MSM_BACKEND_DAI_INT_BT_A2DP_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305549 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5550 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005551 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
5552 MSM_BACKEND_DAI_INT_BT_A2DP_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305553 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5554 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005555 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
5556 MSM_BACKEND_DAI_INT_BT_A2DP_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305557 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5558 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005559 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
5560 MSM_BACKEND_DAI_INT_BT_A2DP_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305561 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5562 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005563 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
5564 MSM_BACKEND_DAI_INT_BT_A2DP_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305565 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5566 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005567 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
5568 MSM_BACKEND_DAI_INT_BT_A2DP_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305569 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5570 msm_routing_put_audio_mixer),
5571};
5572
5573static const struct snd_kcontrol_new int_fm_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08005574 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
5575 MSM_BACKEND_DAI_INT_FM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305576 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5577 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005578 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
5579 MSM_BACKEND_DAI_INT_FM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305580 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5581 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005582 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
5583 MSM_BACKEND_DAI_INT_FM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305584 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5585 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005586 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
5587 MSM_BACKEND_DAI_INT_FM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305588 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5589 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005590 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
5591 MSM_BACKEND_DAI_INT_FM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305592 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5593 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005594 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
5595 MSM_BACKEND_DAI_INT_FM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305596 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5597 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005598 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
5599 MSM_BACKEND_DAI_INT_FM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305600 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5601 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005602 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
5603 MSM_BACKEND_DAI_INT_FM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305604 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5605 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005606 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
5607 MSM_BACKEND_DAI_INT_FM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305608 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5609 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005610 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
5611 MSM_BACKEND_DAI_INT_FM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305612 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5613 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005614 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
5615 MSM_BACKEND_DAI_INT_FM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305616 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5617 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005618 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
5619 MSM_BACKEND_DAI_INT_FM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305620 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5621 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005622 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
5623 MSM_BACKEND_DAI_INT_FM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305624 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5625 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005626 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
5627 MSM_BACKEND_DAI_INT_FM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305628 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5629 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005630 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
5631 MSM_BACKEND_DAI_INT_FM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305632 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5633 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005634 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
5635 MSM_BACKEND_DAI_INT_FM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305636 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5637 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005638 SOC_DOUBLE_EXT("MultiMedia17", SND_SOC_NOPM,
5639 MSM_BACKEND_DAI_INT_FM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305640 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5641 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005642 SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
5643 MSM_BACKEND_DAI_INT_FM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305644 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5645 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005646 SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
5647 MSM_BACKEND_DAI_INT_FM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305648 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5649 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005650 SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
5651 MSM_BACKEND_DAI_INT_FM_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05305652 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5653 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005654 SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
5655 MSM_BACKEND_DAI_INT_FM_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05305656 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5657 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305658};
5659
5660static const struct snd_kcontrol_new afe_pcm_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08005661 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
5662 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305663 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5664 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005665 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
5666 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305667 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5668 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005669 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
5670 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305671 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5672 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005673 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
5674 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305675 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5676 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005677 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
5678 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305679 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5680 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005681 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
5682 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305683 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5684 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005685 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
5686 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305687 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5688 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005689 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
5690 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305691 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5692 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005693 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
5694 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305695 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5696 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005697 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
5698 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305699 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5700 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005701 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
5702 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305703 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5704 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005705 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
5706 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305707 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5708 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005709 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
5710 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305711 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5712 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005713 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
5714 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305715 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5716 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005717 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
5718 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305719 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5720 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005721 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
5722 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305723 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5724 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005725 SOC_DOUBLE_EXT("MultiMedia17", SND_SOC_NOPM,
5726 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305727 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5728 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005729 SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
5730 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305731 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5732 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005733 SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
5734 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305735 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5736 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005737 SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
5738 MSM_BACKEND_DAI_AFE_PCM_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05305739 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5740 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005741 SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
5742 MSM_BACKEND_DAI_AFE_PCM_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05305743 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5744 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305745};
5746
5747static const struct snd_kcontrol_new auxpcm_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08005748 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
5749 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305750 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5751 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005752 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
5753 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305754 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5755 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005756 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
5757 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305758 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5759 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005760 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
5761 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305762 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5763 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005764 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
5765 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305766 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5767 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005768 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
5769 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305770 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5771 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005772 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
5773 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305774 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5775 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005776 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
5777 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305778 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5779 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005780 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
5781 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305782 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5783 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005784 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
5785 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305786 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5787 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005788 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
5789 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305790 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5791 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005792 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
5793 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305794 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5795 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005796 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
5797 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305798 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5799 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005800 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
5801 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305802 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5803 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005804 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
5805 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305806 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5807 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005808 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
5809 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305810 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5811 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005812 SOC_DOUBLE_EXT("MultiMedia17", SND_SOC_NOPM,
5813 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305814 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5815 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005816 SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
5817 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305818 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5819 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005820 SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
5821 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305822 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5823 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005824 SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
5825 MSM_BACKEND_DAI_AUXPCM_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05305826 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5827 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005828 SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
5829 MSM_BACKEND_DAI_AUXPCM_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05305830 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5831 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305832};
5833
5834static const struct snd_kcontrol_new sec_auxpcm_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08005835 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
5836 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305837 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5838 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005839 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
5840 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305841 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5842 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005843 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
5844 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305845 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5846 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005847 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
5848 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305849 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5850 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005851 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
5852 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305853 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5854 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005855 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
5856 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305857 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5858 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005859 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
5860 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305861 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5862 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005863 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
5864 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305865 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5866 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005867 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
5868 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305869 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5870 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005871 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
5872 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305873 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5874 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005875 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
5876 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305877 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5878 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005879 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
5880 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305881 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5882 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005883 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
5884 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305885 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5886 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005887 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
5888 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305889 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5890 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005891 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
5892 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305893 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5894 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005895 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
5896 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305897 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5898 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005899 SOC_DOUBLE_EXT("MultiMedia17", SND_SOC_NOPM,
5900 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305901 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5902 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005903 SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
5904 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305905 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5906 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005907 SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
5908 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305909 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5910 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005911 SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
5912 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05305913 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5914 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005915 SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
5916 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05305917 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5918 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305919};
5920
5921static const struct snd_kcontrol_new tert_auxpcm_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08005922 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
5923 MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305924 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5925 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005926 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
5927 MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305928 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5929 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005930 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
5931 MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305932 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5933 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005934 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
5935 MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305936 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5937 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005938 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
5939 MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305940 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5941 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005942 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
5943 MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305944 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5945 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005946 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
5947 MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305948 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5949 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005950 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
5951 MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305952 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5953 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005954 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
5955 MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305956 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5957 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005958 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
5959 MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305960 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5961 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005962 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
5963 MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305964 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5965 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005966 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
5967 MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305968 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5969 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005970 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
5971 MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305972 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5973 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005974 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
5975 MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305976 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5977 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005978 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
5979 MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305980 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5981 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005982 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
5983 MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305984 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5985 msm_routing_put_audio_mixer),
5986};
5987
5988static const struct snd_kcontrol_new quat_auxpcm_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08005989 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
5990 MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305991 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5992 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005993 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
5994 MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305995 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5996 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08005997 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
5998 MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305999 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6000 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006001 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
6002 MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306003 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6004 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006005 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
6006 MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306007 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6008 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006009 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
6010 MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306011 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6012 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006013 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
6014 MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306015 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6016 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006017 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
6018 MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306019 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6020 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006021 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
6022 MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306023 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6024 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006025 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
6026 MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306027 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6028 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006029 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
6030 MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306031 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6032 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006033 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
6034 MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306035 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6036 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006037 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
6038 MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306039 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6040 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006041 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
6042 MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306043 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6044 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006045 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
6046 MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306047 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6048 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006049 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
6050 MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306051 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6052 msm_routing_put_audio_mixer),
6053};
6054
Rohit Kumara5077932017-09-10 22:05:05 +05306055static const struct snd_kcontrol_new quin_auxpcm_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08006056 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
6057 MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +05306058 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6059 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006060 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
6061 MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +05306062 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6063 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006064 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
6065 MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +05306066 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6067 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006068 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
6069 MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +05306070 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6071 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006072 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
6073 MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +05306074 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6075 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006076 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
6077 MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +05306078 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6079 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006080 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
6081 MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +05306082 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6083 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006084 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
6085 MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +05306086 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6087 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006088 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
6089 MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +05306090 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6091 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006092 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
6093 MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +05306094 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6095 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006096 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
6097 MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +05306098 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6099 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006100 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
6101 MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +05306102 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6103 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006104 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
6105 MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +05306106 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6107 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006108 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
6109 MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +05306110 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6111 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006112 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
6113 MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +05306114 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6115 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006116 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
6117 MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +05306118 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6119 msm_routing_put_audio_mixer),
6120};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306121static const struct snd_kcontrol_new pri_tdm_rx_0_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08006122 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
6123 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306124 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6125 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006126 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
6127 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306128 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6129 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006130 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
6131 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306132 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6133 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006134 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
6135 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306136 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6137 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006138 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
6139 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306140 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6141 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006142 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
6143 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306144 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6145 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006146 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
6147 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306148 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6149 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006150 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
6151 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306152 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6153 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006154 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
6155 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306156 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6157 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006158 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
6159 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306160 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6161 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006162 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
6163 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306164 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6165 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006166 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
6167 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306168 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6169 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006170 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
6171 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306172 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6173 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006174 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
6175 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306176 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6177 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006178 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
6179 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306180 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6181 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006182 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
6183 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306184 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6185 msm_routing_put_audio_mixer),
6186};
6187
6188static const struct snd_kcontrol_new pri_tdm_rx_1_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08006189 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
6190 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306191 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6192 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006193 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
6194 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306195 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6196 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006197 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
6198 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306199 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6200 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006201 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
6202 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306203 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6204 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006205 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
6206 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306207 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6208 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006209 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
6210 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306211 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6212 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006213 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
6214 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306215 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6216 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006217 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
6218 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306219 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6220 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006221 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
6222 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306223 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6224 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006225 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
6226 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306227 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6228 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006229 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
6230 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306231 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6232 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006233 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
6234 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306235 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6236 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006237 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
6238 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306239 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6240 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006241 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
6242 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306243 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6244 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006245 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
6246 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306247 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6248 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006249 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
6250 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306251 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6252 msm_routing_put_audio_mixer),
6253};
6254
6255static const struct snd_kcontrol_new pri_tdm_rx_2_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08006256 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
6257 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306258 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6259 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006260 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
6261 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306262 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6263 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006264 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
6265 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306266 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6267 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006268 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
6269 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306270 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6271 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006272 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
6273 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306274 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6275 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006276 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
6277 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306278 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6279 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006280 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
6281 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306282 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6283 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006284 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
6285 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306286 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6287 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006288 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
6289 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306290 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6291 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006292 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
6293 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306294 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6295 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006296 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
6297 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306298 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6299 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006300 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
6301 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306302 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6303 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006304 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
6305 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306306 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6307 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006308 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
6309 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306310 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6311 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006312 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
6313 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306314 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6315 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006316 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
6317 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306318 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6319 msm_routing_put_audio_mixer),
6320};
6321
6322static const struct snd_kcontrol_new pri_tdm_rx_3_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08006323 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
6324 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306325 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6326 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006327 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
6328 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306329 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6330 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006331 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
6332 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306333 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6334 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006335 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
6336 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306337 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6338 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006339 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
6340 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306341 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6342 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006343 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
6344 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306345 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6346 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006347 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
6348 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306349 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6350 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006351 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
6352 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306353 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6354 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006355 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
6356 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306357 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6358 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006359 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
6360 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306361 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6362 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006363 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
6364 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306365 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6366 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006367 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
6368 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306369 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6370 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006371 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
6372 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306373 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6374 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006375 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
6376 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306377 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6378 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006379 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
6380 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306381 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6382 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006383 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
6384 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306385 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6386 msm_routing_put_audio_mixer),
6387};
6388
6389static const struct snd_kcontrol_new pri_tdm_tx_0_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08006390 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
6391 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306392 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6393 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006394 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
6395 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306396 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6397 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006398 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
6399 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306400 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6401 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006402 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
6403 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306404 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6405 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006406 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
6407 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306408 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6409 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006410 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
6411 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306412 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6413 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006414 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
6415 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306416 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6417 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006418 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
6419 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306420 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6421 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006422 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
6423 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306424 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6425 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006426 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
6427 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306428 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6429 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006430 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
6431 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306432 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6433 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006434 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
6435 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306436 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6437 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006438 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
6439 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306440 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6441 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006442 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
6443 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306444 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6445 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006446 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
6447 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306448 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6449 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006450 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
6451 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306452 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6453 msm_routing_put_audio_mixer),
6454};
6455
6456static const struct snd_kcontrol_new sec_tdm_rx_0_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08006457 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
6458 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306459 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6460 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006461 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
6462 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306463 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6464 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006465 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
6466 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306467 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6468 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006469 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
6470 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306471 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6472 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006473 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
6474 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306475 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6476 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006477 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
6478 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306479 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6480 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006481 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
6482 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306483 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6484 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006485 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
6486 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306487 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6488 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006489 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
6490 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306491 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6492 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006493 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
6494 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306495 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6496 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006497 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
6498 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306499 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6500 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006501 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
6502 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306503 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6504 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006505 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
6506 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306507 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6508 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006509 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
6510 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306511 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6512 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006513 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
6514 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306515 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6516 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006517 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
6518 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306519 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6520 msm_routing_put_audio_mixer),
6521};
6522
6523static const struct snd_kcontrol_new sec_tdm_rx_1_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08006524 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
6525 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306526 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6527 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006528 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
6529 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306530 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6531 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006532 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
6533 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306534 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6535 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006536 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
6537 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306538 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6539 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006540 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
6541 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306542 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6543 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006544 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
6545 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306546 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6547 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006548 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
6549 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306550 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6551 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006552 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
6553 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306554 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6555 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006556 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
6557 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306558 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6559 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006560 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
6561 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306562 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6563 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006564 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
6565 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306566 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6567 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006568 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
6569 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306570 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6571 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006572 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
6573 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306574 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6575 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006576 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
6577 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306578 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6579 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006580 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
6581 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306582 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6583 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006584 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
6585 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306586 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6587 msm_routing_put_audio_mixer),
6588};
6589
6590static const struct snd_kcontrol_new sec_tdm_rx_2_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08006591 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
6592 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306593 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6594 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006595 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
6596 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306597 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6598 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006599 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
6600 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306601 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6602 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006603 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
6604 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306605 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6606 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006607 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
6608 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306609 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6610 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006611 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
6612 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306613 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6614 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006615 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
6616 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306617 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6618 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006619 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
6620 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306621 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6622 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006623 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
6624 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306625 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6626 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006627 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
6628 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306629 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6630 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006631 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
6632 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306633 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6634 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006635 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
6636 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306637 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6638 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006639 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
6640 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306641 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6642 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006643 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
6644 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306645 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6646 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006647 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
6648 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306649 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6650 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006651 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
6652 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306653 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6654 msm_routing_put_audio_mixer),
6655};
6656
6657static const struct snd_kcontrol_new sec_tdm_rx_3_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08006658 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
6659 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306660 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6661 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006662 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
6663 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306664 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6665 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006666 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
6667 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306668 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6669 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006670 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
6671 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306672 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6673 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006674 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
6675 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306676 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6677 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006678 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
6679 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306680 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6681 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006682 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
6683 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306684 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6685 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006686 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
6687 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306688 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6689 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006690 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
6691 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306692 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6693 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006694 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
6695 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306696 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6697 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006698 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
6699 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306700 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6701 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006702 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
6703 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306704 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6705 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006706 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
6707 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306708 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6709 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006710 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
6711 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306712 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6713 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006714 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
6715 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306716 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6717 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006718 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
6719 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306720 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6721 msm_routing_put_audio_mixer),
6722};
6723
6724static const struct snd_kcontrol_new sec_tdm_tx_0_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08006725 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
6726 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306727 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6728 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006729 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
6730 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306731 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6732 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006733 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
6734 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306735 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6736 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006737 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
6738 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306739 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6740 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006741 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
6742 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306743 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6744 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006745 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
6746 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306747 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6748 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006749 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
6750 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306751 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6752 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006753 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
6754 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306755 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6756 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006757 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
6758 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306759 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6760 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006761 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
6762 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306763 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6764 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006765 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
6766 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306767 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6768 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006769 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
6770 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306771 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6772 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006773 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
6774 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306775 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6776 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006777 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
6778 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306779 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6780 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006781 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
6782 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306783 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6784 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006785 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
6786 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306787 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6788 msm_routing_put_audio_mixer),
6789};
6790
6791static const struct snd_kcontrol_new tert_tdm_rx_0_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08006792 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
6793 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306794 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6795 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006796 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
6797 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306798 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6799 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006800 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
6801 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306802 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6803 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006804 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
6805 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306806 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6807 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006808 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
6809 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306810 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6811 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006812 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
6813 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306814 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6815 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006816 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
6817 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306818 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6819 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006820 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
6821 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306822 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6823 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006824 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
6825 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306826 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6827 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006828 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
6829 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306830 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6831 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006832 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
6833 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306834 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6835 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006836 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
6837 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306838 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6839 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006840 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
6841 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306842 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6843 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006844 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
6845 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306846 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6847 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006848 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
6849 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306850 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6851 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006852 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
6853 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306854 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6855 msm_routing_put_audio_mixer),
6856};
6857
6858static const struct snd_kcontrol_new tert_tdm_tx_0_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08006859 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
6860 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306861 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6862 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006863 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
6864 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306865 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6866 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006867 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
6868 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306869 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6870 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006871 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
6872 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306873 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6874 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006875 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
6876 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306877 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6878 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006879 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
6880 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306881 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6882 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006883 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
6884 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306885 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6886 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006887 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
6888 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306889 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6890 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006891 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
6892 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306893 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6894 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006895 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
6896 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306897 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6898 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006899 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
6900 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306901 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6902 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006903 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
6904 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306905 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6906 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006907 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
6908 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306909 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6910 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006911 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
6912 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306913 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6914 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006915 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
6916 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306917 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6918 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006919 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
6920 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306921 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6922 msm_routing_put_audio_mixer),
6923};
6924
6925static const struct snd_kcontrol_new tert_tdm_rx_1_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08006926 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
6927 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306928 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6929 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006930 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
6931 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306932 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6933 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006934 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
6935 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306936 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6937 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006938 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
6939 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306940 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6941 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006942 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
6943 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306944 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6945 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006946 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
6947 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306948 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6949 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006950 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
6951 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306952 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6953 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006954 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
6955 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306956 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6957 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006958 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
6959 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306960 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6961 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006962 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
6963 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306964 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6965 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006966 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
6967 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306968 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6969 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006970 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
6971 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306972 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6973 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006974 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
6975 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306976 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6977 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006978 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
6979 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306980 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6981 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006982 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
6983 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306984 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6985 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006986 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
6987 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306988 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6989 msm_routing_put_audio_mixer),
6990};
6991
6992static const struct snd_kcontrol_new tert_tdm_rx_2_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08006993 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
6994 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306995 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6996 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08006997 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
6998 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306999 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7000 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007001 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
7002 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307003 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7004 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007005 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
7006 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307007 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7008 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007009 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
7010 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307011 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7012 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007013 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
7014 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307015 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7016 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007017 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
7018 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307019 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
7020 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007021 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
7022 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307023 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7024 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007025 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
7026 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307027 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7028 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007029 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
7030 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307031 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7032 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007033 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
7034 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307035 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
7036 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007037 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
7038 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307039 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
7040 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007041 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
7042 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307043 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
7044 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007045 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
7046 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307047 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
7048 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007049 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
7050 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307051 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
7052 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007053 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
7054 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307055 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7056 msm_routing_put_audio_mixer),
7057};
7058
7059static const struct snd_kcontrol_new tert_tdm_rx_3_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08007060 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
7061 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307062 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7063 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007064 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
7065 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307066 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7067 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007068 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
7069 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307070 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7071 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007072 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
7073 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307074 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7075 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007076 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
7077 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307078 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7079 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007080 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
7081 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307082 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7083 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007084 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
7085 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307086 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
7087 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007088 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
7089 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307090 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7091 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007092 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
7093 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307094 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7095 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007096 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
7097 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307098 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7099 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007100 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
7101 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307102 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
7103 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007104 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
7105 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307106 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
7107 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007108 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
7109 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307110 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
7111 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007112 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
7113 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307114 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
7115 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007116 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
7117 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307118 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
7119 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007120 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
7121 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307122 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7123 msm_routing_put_audio_mixer),
7124};
7125
7126static const struct snd_kcontrol_new tert_tdm_rx_4_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08007127 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
7128 MSM_BACKEND_DAI_TERT_TDM_RX_4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307129 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7130 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007131 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
7132 MSM_BACKEND_DAI_TERT_TDM_RX_4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307133 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7134 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007135 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
7136 MSM_BACKEND_DAI_TERT_TDM_RX_4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307137 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7138 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007139 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
7140 MSM_BACKEND_DAI_TERT_TDM_RX_4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307141 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7142 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007143 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
7144 MSM_BACKEND_DAI_TERT_TDM_RX_4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307145 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7146 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007147 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
7148 MSM_BACKEND_DAI_TERT_TDM_RX_4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307149 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7150 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007151 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
7152 MSM_BACKEND_DAI_TERT_TDM_RX_4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307153 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
7154 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007155 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
7156 MSM_BACKEND_DAI_TERT_TDM_RX_4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307157 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7158 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007159 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
7160 MSM_BACKEND_DAI_TERT_TDM_RX_4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307161 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7162 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007163 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
7164 MSM_BACKEND_DAI_TERT_TDM_RX_4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307165 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7166 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007167 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
7168 MSM_BACKEND_DAI_TERT_TDM_RX_4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307169 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
7170 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007171 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
7172 MSM_BACKEND_DAI_TERT_TDM_RX_4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307173 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
7174 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007175 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
7176 MSM_BACKEND_DAI_TERT_TDM_RX_4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307177 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
7178 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007179 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
7180 MSM_BACKEND_DAI_TERT_TDM_RX_4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307181 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
7182 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007183 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
7184 MSM_BACKEND_DAI_TERT_TDM_RX_4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307185 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
7186 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007187 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
7188 MSM_BACKEND_DAI_TERT_TDM_RX_4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307189 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7190 msm_routing_put_audio_mixer),
7191};
7192
7193static const struct snd_kcontrol_new quat_tdm_rx_0_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08007194 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
7195 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307196 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7197 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007198 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
7199 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307200 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7201 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007202 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
7203 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307204 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7205 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007206 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
7207 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307208 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7209 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007210 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
7211 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307212 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7213 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007214 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
7215 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307216 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7217 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007218 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
7219 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307220 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
7221 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007222 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
7223 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307224 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7225 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007226 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
7227 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307228 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7229 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007230 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
7231 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307232 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7233 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007234 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
7235 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307236 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
7237 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007238 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
7239 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307240 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
7241 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007242 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
7243 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307244 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
7245 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007246 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
7247 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307248 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
7249 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007250 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
7251 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307252 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
7253 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007254 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
7255 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307256 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7257 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007258 SOC_DOUBLE_EXT("MultiMedia20", SND_SOC_NOPM,
7259 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307260 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7261 msm_routing_put_audio_mixer),
7262};
7263
7264static const struct snd_kcontrol_new quat_tdm_tx_0_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08007265 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
7266 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307267 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7268 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007269 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
7270 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307271 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7272 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007273 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
7274 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307275 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7276 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007277 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
7278 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307279 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7280 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007281 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
7282 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307283 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7284 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007285 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
7286 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307287 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7288 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007289 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
7290 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307291 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
7292 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007293 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
7294 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307295 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7296 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007297 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
7298 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307299 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7300 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007301 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
7302 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307303 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7304 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007305 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
7306 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307307 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
7308 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007309 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
7310 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307311 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
7312 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007313 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
7314 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307315 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
7316 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007317 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
7318 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307319 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
7320 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007321 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
7322 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307323 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
7324 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007325 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
7326 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307327 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7328 msm_routing_put_audio_mixer),
7329};
7330
7331static const struct snd_kcontrol_new quat_tdm_rx_1_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08007332 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
7333 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307334 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7335 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007336 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
7337 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307338 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7339 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007340 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
7341 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307342 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7343 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007344 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
7345 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307346 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7347 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007348 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
7349 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307350 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7351 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007352 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
7353 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307354 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7355 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007356 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
7357 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307358 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
7359 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007360 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
7361 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307362 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7363 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007364 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
7365 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307366 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7367 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007368 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
7369 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307370 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7371 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007372 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
7373 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307374 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
7375 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007376 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
7377 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307378 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
7379 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007380 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
7381 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307382 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
7383 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007384 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
7385 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307386 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
7387 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007388 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
7389 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307390 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
7391 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007392 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
7393 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307394 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7395 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007396 SOC_DOUBLE_EXT("MultiMedia20", SND_SOC_NOPM,
7397 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307398 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7399 msm_routing_put_audio_mixer),
7400};
7401
7402static const struct snd_kcontrol_new quat_tdm_rx_2_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08007403 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
7404 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307405 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7406 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007407 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
7408 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307409 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7410 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007411 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
7412 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307413 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7414 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007415 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
7416 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307417 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7418 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007419 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
7420 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307421 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7422 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007423 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
7424 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307425 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7426 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007427 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
7428 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307429 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
7430 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007431 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
7432 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307433 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7434 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007435 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
7436 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307437 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7438 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007439 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
7440 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307441 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7442 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007443 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
7444 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307445 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
7446 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007447 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
7448 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307449 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
7450 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007451 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
7452 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307453 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
7454 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007455 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
7456 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307457 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
7458 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007459 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
7460 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307461 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
7462 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007463 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
7464 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307465 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7466 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007467 SOC_DOUBLE_EXT("MultiMedia20", SND_SOC_NOPM,
7468 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307469 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7470 msm_routing_put_audio_mixer),
7471};
7472
7473static const struct snd_kcontrol_new quat_tdm_rx_3_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08007474 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
7475 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307476 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7477 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007478 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
7479 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307480 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7481 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007482 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
7483 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307484 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7485 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007486 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
7487 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307488 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7489 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007490 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
7491 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307492 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7493 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007494 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
7495 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307496 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7497 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007498 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
7499 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307500 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
7501 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007502 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
7503 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307504 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7505 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007506 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
7507 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307508 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7509 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007510 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
7511 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307512 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7513 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007514 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
7515 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307516 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
7517 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007518 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
7519 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307520 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
7521 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007522 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
7523 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307524 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
7525 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007526 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
7527 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307528 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
7529 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007530 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
7531 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307532 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
7533 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007534 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
7535 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307536 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7537 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007538 SOC_DOUBLE_EXT("MultiMedia20", SND_SOC_NOPM,
7539 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307540 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7541 msm_routing_put_audio_mixer),
7542};
7543
Rohit Kumara5077932017-09-10 22:05:05 +05307544static const struct snd_kcontrol_new quin_tdm_rx_0_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08007545 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
7546 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307547 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7548 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007549 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
7550 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307551 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7552 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007553 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
7554 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307555 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7556 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007557 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
7558 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307559 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7560 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007561 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
7562 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307563 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7564 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007565 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
7566 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307567 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7568 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007569 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
7570 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307571 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
7572 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007573 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
7574 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307575 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7576 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007577 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
7578 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307579 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7580 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007581 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
7582 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307583 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7584 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007585 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
7586 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307587 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
7588 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007589 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
7590 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307591 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
7592 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007593 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
7594 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307595 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
7596 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007597 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
7598 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307599 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
7600 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007601 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
7602 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307603 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
7604 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007605 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
7606 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307607 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7608 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007609 SOC_DOUBLE_EXT("MultiMedia20", SND_SOC_NOPM,
7610 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307611 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7612 msm_routing_put_audio_mixer),
7613};
7614
7615static const struct snd_kcontrol_new quin_tdm_tx_0_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08007616 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
7617 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307618 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7619 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007620 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
7621 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307622 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7623 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007624 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
7625 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307626 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7627 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007628 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
7629 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307630 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7631 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007632 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
7633 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307634 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7635 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007636 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
7637 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307638 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7639 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007640 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
7641 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307642 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
7643 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007644 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
7645 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307646 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7647 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007648 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
7649 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307650 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7651 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007652 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
7653 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307654 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7655 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007656 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
7657 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307658 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
7659 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007660 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
7661 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307662 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
7663 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007664 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
7665 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307666 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
7667 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007668 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
7669 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307670 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
7671 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007672 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
7673 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307674 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
7675 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007676 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
7677 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05307678 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7679 msm_routing_put_audio_mixer),
7680};
7681
7682static const struct snd_kcontrol_new quin_tdm_rx_1_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08007683 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
7684 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05307685 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7686 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007687 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
7688 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05307689 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7690 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007691 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
7692 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05307693 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7694 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007695 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
7696 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05307697 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7698 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007699 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
7700 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05307701 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7702 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007703 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
7704 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05307705 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7706 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007707 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
7708 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05307709 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
7710 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007711 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
7712 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05307713 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7714 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007715 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
7716 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05307717 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7718 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007719 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
7720 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05307721 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7722 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007723 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
7724 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05307725 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
7726 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007727 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
7728 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05307729 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
7730 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007731 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
7732 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05307733 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
7734 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007735 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
7736 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05307737 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
7738 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007739 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
7740 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05307741 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
7742 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007743 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
7744 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05307745 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7746 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007747 SOC_DOUBLE_EXT("MultiMedia20", SND_SOC_NOPM,
7748 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05307749 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7750 msm_routing_put_audio_mixer),
7751};
7752
7753static const struct snd_kcontrol_new quin_tdm_rx_2_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08007754 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
7755 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05307756 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7757 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007758 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
7759 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05307760 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7761 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007762 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
7763 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05307764 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7765 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007766 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
7767 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05307768 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7769 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007770 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
7771 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05307772 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7773 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007774 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
7775 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05307776 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7777 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007778 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
7779 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05307780 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
7781 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007782 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
7783 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05307784 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7785 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007786 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
7787 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05307788 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7789 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007790 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
7791 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05307792 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7793 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007794 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
7795 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05307796 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
7797 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007798 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
7799 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05307800 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
7801 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007802 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
7803 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05307804 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
7805 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007806 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
7807 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05307808 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
7809 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007810 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
7811 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05307812 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
7813 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007814 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
7815 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05307816 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7817 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007818 SOC_DOUBLE_EXT("MultiMedia20", SND_SOC_NOPM,
7819 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05307820 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7821 msm_routing_put_audio_mixer),
7822};
7823
7824static const struct snd_kcontrol_new quin_tdm_rx_3_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08007825 SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
7826 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05307827 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7828 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007829 SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
7830 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05307831 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7832 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007833 SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
7834 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05307835 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7836 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007837 SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
7838 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05307839 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7840 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007841 SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
7842 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05307843 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7844 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007845 SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
7846 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05307847 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7848 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007849 SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
7850 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05307851 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
7852 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007853 SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
7854 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05307855 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7856 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007857 SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
7858 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05307859 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7860 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007861 SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
7862 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05307863 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7864 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007865 SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
7866 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05307867 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
7868 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007869 SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
7870 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05307871 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
7872 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007873 SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
7874 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05307875 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
7876 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007877 SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
7878 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05307879 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
7880 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007881 SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
7882 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05307883 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
7884 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007885 SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
7886 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05307887 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7888 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007889 SOC_DOUBLE_EXT("MultiMedia20", SND_SOC_NOPM,
7890 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05307891 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7892 msm_routing_put_audio_mixer),
7893};
7894
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307895static const struct snd_kcontrol_new mmul1_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08007896 SOC_DOUBLE_EXT("PRI_TX", SND_SOC_NOPM,
7897 MSM_BACKEND_DAI_PRI_I2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307898 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7899 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007900 SOC_DOUBLE_EXT("MI2S_TX", SND_SOC_NOPM,
7901 MSM_BACKEND_DAI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307902 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7903 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007904 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
7905 MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307906 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7907 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007908 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
7909 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307910 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7911 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007912 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
7913 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307914 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7915 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007916 SOC_DOUBLE_EXT("INT2_MI2S_TX", SND_SOC_NOPM,
7917 MSM_BACKEND_DAI_INT2_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307918 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7919 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007920 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
7921 MSM_BACKEND_DAI_INT3_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307922 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7923 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007924 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
7925 MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307926 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7927 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007928 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
7929 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307930 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7931 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007932 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
7933 MSM_BACKEND_DAI_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307934 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7935 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007936 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
7937 MSM_BACKEND_DAI_SEC_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307938 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7939 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007940 SOC_DOUBLE_EXT("TERT_AUXPCM_UL_TX", SND_SOC_NOPM,
7941 MSM_BACKEND_DAI_TERT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307942 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7943 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007944 SOC_DOUBLE_EXT("QUAT_AUXPCM_UL_TX", SND_SOC_NOPM,
7945 MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307946 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7947 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007948 SOC_DOUBLE_EXT("QUIN_AUXPCM_UL_TX", SND_SOC_NOPM,
7949 MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
Rohit Kumara5077932017-09-10 22:05:05 +05307950 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7951 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007952 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
7953 MSM_BACKEND_DAI_INT_BT_SCO_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307954 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7955 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007956 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
7957 MSM_BACKEND_DAI_INT_FM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307958 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7959 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007960 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
7961 MSM_BACKEND_DAI_AFE_PCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307962 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7963 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007964 SOC_DOUBLE_EXT("VOC_REC_DL", SND_SOC_NOPM,
7965 MSM_BACKEND_DAI_INCALL_RECORD_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307966 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7967 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007968 SOC_DOUBLE_EXT("VOC_REC_UL", SND_SOC_NOPM,
7969 MSM_BACKEND_DAI_INCALL_RECORD_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307970 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7971 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007972 SOC_DOUBLE_EXT("SLIM_4_TX", SND_SOC_NOPM,
7973 MSM_BACKEND_DAI_SLIMBUS_4_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307974 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7975 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007976 SOC_DOUBLE_EXT("SLIM_6_TX", SND_SOC_NOPM,
7977 MSM_BACKEND_DAI_SLIMBUS_6_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307978 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7979 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007980 SOC_DOUBLE_EXT("QUIN_MI2S_TX", SND_SOC_NOPM,
7981 MSM_BACKEND_DAI_QUINARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307982 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7983 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007984 SOC_DOUBLE_EXT("PRI_TDM_TX_0", SND_SOC_NOPM,
7985 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307986 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7987 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007988 SOC_DOUBLE_EXT("PRI_TDM_TX_1", SND_SOC_NOPM,
7989 MSM_BACKEND_DAI_PRI_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307990 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7991 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007992 SOC_DOUBLE_EXT("PRI_TDM_TX_2", SND_SOC_NOPM,
7993 MSM_BACKEND_DAI_PRI_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307994 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7995 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08007996 SOC_DOUBLE_EXT("PRI_TDM_TX_3", SND_SOC_NOPM,
7997 MSM_BACKEND_DAI_PRI_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307998 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7999 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008000 SOC_DOUBLE_EXT("SEC_TDM_TX_0", SND_SOC_NOPM,
8001 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308002 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
8003 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008004 SOC_DOUBLE_EXT("SEC_TDM_TX_1", SND_SOC_NOPM,
8005 MSM_BACKEND_DAI_SEC_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308006 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
8007 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008008 SOC_DOUBLE_EXT("SEC_TDM_TX_2", SND_SOC_NOPM,
8009 MSM_BACKEND_DAI_SEC_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308010 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
8011 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008012 SOC_DOUBLE_EXT("SEC_TDM_TX_3", SND_SOC_NOPM,
8013 MSM_BACKEND_DAI_SEC_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308014 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
8015 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008016 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
8017 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308018 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
8019 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008020 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
8021 MSM_BACKEND_DAI_TERT_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308022 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
8023 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008024 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
8025 MSM_BACKEND_DAI_TERT_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308026 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
8027 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008028 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
8029 MSM_BACKEND_DAI_TERT_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308030 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
8031 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008032 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
8033 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308034 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
8035 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008036 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
8037 MSM_BACKEND_DAI_QUAT_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308038 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
8039 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008040 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
8041 MSM_BACKEND_DAI_QUAT_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308042 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
8043 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008044 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
8045 MSM_BACKEND_DAI_QUAT_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308046 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
8047 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008048 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
8049 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05308050 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
8051 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008052 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
8053 MSM_BACKEND_DAI_QUIN_TDM_TX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05308054 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
8055 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008056 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
8057 MSM_BACKEND_DAI_QUIN_TDM_TX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05308058 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
8059 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008060 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
8061 MSM_BACKEND_DAI_QUIN_TDM_TX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05308062 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
8063 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008064 SOC_DOUBLE_EXT("SLIM_7_TX", SND_SOC_NOPM,
8065 MSM_BACKEND_DAI_SLIMBUS_7_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308066 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
8067 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008068 SOC_DOUBLE_EXT("SLIM_8_TX", SND_SOC_NOPM,
8069 MSM_BACKEND_DAI_SLIMBUS_8_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308070 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
8071 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008072 SOC_DOUBLE_EXT("USB_AUDIO_TX", SND_SOC_NOPM,
8073 MSM_BACKEND_DAI_USB_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308074 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
8075 msm_routing_put_audio_mixer),
8076};
8077
8078static const struct snd_kcontrol_new mmul2_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08008079 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
8080 MSM_BACKEND_DAI_INT_FM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308081 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8082 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008083 SOC_DOUBLE_EXT("MI2S_TX", SND_SOC_NOPM,
8084 MSM_BACKEND_DAI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308085 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8086 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008087 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
8088 MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308089 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8090 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008091 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
8092 MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308093 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8094 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008095 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
8096 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308097 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8098 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008099 SOC_DOUBLE_EXT("INT2_MI2S_TX", SND_SOC_NOPM,
8100 MSM_BACKEND_DAI_INT2_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308101 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8102 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008103 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
8104 MSM_BACKEND_DAI_INT3_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308105 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8106 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008107 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
8108 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308109 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8110 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008111 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
8112 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308113 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8114 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008115 SOC_DOUBLE_EXT("SLIM_6_TX", SND_SOC_NOPM,
8116 MSM_BACKEND_DAI_SLIMBUS_6_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308117 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8118 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008119 SOC_DOUBLE_EXT("SLIM_1_TX", SND_SOC_NOPM,
8120 MSM_BACKEND_DAI_SLIMBUS_1_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308121 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8122 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008123 SOC_DOUBLE_EXT("QUIN_MI2S_TX", SND_SOC_NOPM,
8124 MSM_BACKEND_DAI_QUINARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308125 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8126 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008127 SOC_DOUBLE_EXT("PRI_TDM_TX_0", SND_SOC_NOPM,
8128 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308129 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8130 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008131 SOC_DOUBLE_EXT("PRI_TDM_TX_1", SND_SOC_NOPM,
8132 MSM_BACKEND_DAI_PRI_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308133 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8134 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008135 SOC_DOUBLE_EXT("PRI_TDM_TX_2", SND_SOC_NOPM,
8136 MSM_BACKEND_DAI_PRI_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308137 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8138 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008139 SOC_DOUBLE_EXT("PRI_TDM_TX_3", SND_SOC_NOPM,
8140 MSM_BACKEND_DAI_PRI_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308141 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8142 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008143 SOC_DOUBLE_EXT("SEC_TDM_TX_0", SND_SOC_NOPM,
8144 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308145 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8146 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008147 SOC_DOUBLE_EXT("SEC_TDM_TX_1", SND_SOC_NOPM,
8148 MSM_BACKEND_DAI_SEC_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308149 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8150 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008151 SOC_DOUBLE_EXT("SEC_TDM_TX_2", SND_SOC_NOPM,
8152 MSM_BACKEND_DAI_SEC_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308153 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8154 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008155 SOC_DOUBLE_EXT("SEC_TDM_TX_3", SND_SOC_NOPM,
8156 MSM_BACKEND_DAI_SEC_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308157 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8158 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008159 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
8160 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308161 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8162 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008163 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
8164 MSM_BACKEND_DAI_TERT_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308165 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8166 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008167 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
8168 MSM_BACKEND_DAI_TERT_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308169 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8170 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008171 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
8172 MSM_BACKEND_DAI_TERT_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308173 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8174 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008175 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
8176 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308177 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8178 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008179 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
8180 MSM_BACKEND_DAI_QUAT_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308181 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8182 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008183 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
8184 MSM_BACKEND_DAI_QUAT_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308185 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8186 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008187 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
8188 MSM_BACKEND_DAI_QUAT_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308189 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8190 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008191 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
8192 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05308193 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8194 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008195 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
8196 MSM_BACKEND_DAI_QUIN_TDM_TX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05308197 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8198 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008199 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
8200 MSM_BACKEND_DAI_QUIN_TDM_TX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05308201 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8202 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008203 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
8204 MSM_BACKEND_DAI_QUIN_TDM_TX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05308205 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8206 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008207 SOC_DOUBLE_EXT("SLIM_8_TX", SND_SOC_NOPM,
8208 MSM_BACKEND_DAI_SLIMBUS_8_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308209 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8210 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008211 SOC_DOUBLE_EXT("USB_AUDIO_TX", SND_SOC_NOPM,
8212 MSM_BACKEND_DAI_USB_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308213 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
8214 msm_routing_put_audio_mixer),
8215};
8216
8217static const struct snd_kcontrol_new mmul3_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08008218 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
8219 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308220 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8221 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008222 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
8223 MSM_BACKEND_DAI_INT_FM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308224 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8225 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008226 SOC_DOUBLE_EXT("MI2S_TX", SND_SOC_NOPM,
8227 MSM_BACKEND_DAI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308228 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8229 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008230 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
8231 MSM_BACKEND_DAI_AFE_PCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308232 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8233 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008234 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
8235 MSM_BACKEND_DAI_INT_BT_SCO_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308236 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8237 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008238 SOC_DOUBLE_EXT("AUX_PCM_TX", SND_SOC_NOPM,
8239 MSM_BACKEND_DAI_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308240 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8241 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008242 SOC_DOUBLE_EXT("SEC_AUX_PCM_TX", SND_SOC_NOPM,
8243 MSM_BACKEND_DAI_SEC_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308244 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8245 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008246 SOC_DOUBLE_EXT("TERT_AUX_PCM_TX", SND_SOC_NOPM,
8247 MSM_BACKEND_DAI_TERT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308248 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8249 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008250 SOC_DOUBLE_EXT("QUAT_AUX_PCM_TX", SND_SOC_NOPM,
8251 MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308252 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8253 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008254 SOC_DOUBLE_EXT("QUIN_AUX_PCM_TX", SND_SOC_NOPM,
8255 MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
Rohit Kumara5077932017-09-10 22:05:05 +05308256 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8257 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008258 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
8259 MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308260 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8261 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008262 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
8263 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308264 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8265 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008266 SOC_DOUBLE_EXT("INT2_MI2S_TX", SND_SOC_NOPM,
8267 MSM_BACKEND_DAI_INT2_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308268 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8269 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008270 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
8271 MSM_BACKEND_DAI_INT3_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308272 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8273 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008274 SOC_DOUBLE_EXT("PRI_TDM_TX_0", SND_SOC_NOPM,
8275 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308276 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8277 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008278 SOC_DOUBLE_EXT("PRI_TDM_TX_1", SND_SOC_NOPM,
8279 MSM_BACKEND_DAI_PRI_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308280 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8281 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008282 SOC_DOUBLE_EXT("PRI_TDM_TX_2", SND_SOC_NOPM,
8283 MSM_BACKEND_DAI_PRI_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308284 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8285 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008286 SOC_DOUBLE_EXT("PRI_TDM_TX_3", SND_SOC_NOPM,
8287 MSM_BACKEND_DAI_PRI_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308288 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8289 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008290 SOC_DOUBLE_EXT("SEC_TDM_TX_0", SND_SOC_NOPM,
8291 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308292 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8293 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008294 SOC_DOUBLE_EXT("SEC_TDM_TX_1", SND_SOC_NOPM,
8295 MSM_BACKEND_DAI_SEC_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308296 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8297 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008298 SOC_DOUBLE_EXT("SEC_TDM_TX_2", SND_SOC_NOPM,
8299 MSM_BACKEND_DAI_SEC_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308300 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8301 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008302 SOC_DOUBLE_EXT("SEC_TDM_TX_3", SND_SOC_NOPM,
8303 MSM_BACKEND_DAI_SEC_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308304 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8305 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008306 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
8307 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308308 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8309 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008310 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
8311 MSM_BACKEND_DAI_TERT_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308312 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8313 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008314 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
8315 MSM_BACKEND_DAI_TERT_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308316 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8317 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008318 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
8319 MSM_BACKEND_DAI_TERT_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308320 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8321 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008322 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
8323 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308324 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8325 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008326 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
8327 MSM_BACKEND_DAI_QUAT_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308328 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8329 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008330 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
8331 MSM_BACKEND_DAI_QUAT_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308332 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8333 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008334 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
8335 MSM_BACKEND_DAI_QUAT_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308336 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8337 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008338 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
8339 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05308340 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8341 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008342 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
8343 MSM_BACKEND_DAI_QUIN_TDM_TX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05308344 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8345 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008346 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
8347 MSM_BACKEND_DAI_QUIN_TDM_TX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05308348 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8349 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008350 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
8351 MSM_BACKEND_DAI_QUIN_TDM_TX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05308352 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
8353 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308354};
8355
8356static const struct snd_kcontrol_new mmul4_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08008357 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
8358 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308359 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8360 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008361 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
8362 MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308363 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8364 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008365 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
8366 MSM_BACKEND_DAI_INT_FM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308367 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8368 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008369 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
8370 MSM_BACKEND_DAI_INT_BT_SCO_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308371 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8372 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008373 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
8374 MSM_BACKEND_DAI_AFE_PCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308375 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8376 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008377 SOC_DOUBLE_EXT("VOC_REC_DL", SND_SOC_NOPM,
8378 MSM_BACKEND_DAI_INCALL_RECORD_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308379 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8380 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008381 SOC_DOUBLE_EXT("VOC_REC_UL", SND_SOC_NOPM,
8382 MSM_BACKEND_DAI_INCALL_RECORD_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308383 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8384 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008385 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
8386 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308387 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8388 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008389 SOC_DOUBLE_EXT("PRI_TDM_TX_0", SND_SOC_NOPM,
8390 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308391 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8392 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008393 SOC_DOUBLE_EXT("PRI_TDM_TX_1", SND_SOC_NOPM,
8394 MSM_BACKEND_DAI_PRI_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308395 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8396 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008397 SOC_DOUBLE_EXT("PRI_TDM_TX_2", SND_SOC_NOPM,
8398 MSM_BACKEND_DAI_PRI_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308399 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8400 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008401 SOC_DOUBLE_EXT("PRI_TDM_TX_3", SND_SOC_NOPM,
8402 MSM_BACKEND_DAI_PRI_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308403 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8404 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008405 SOC_DOUBLE_EXT("SEC_TDM_TX_0", SND_SOC_NOPM,
8406 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308407 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8408 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008409 SOC_DOUBLE_EXT("SEC_TDM_TX_1", SND_SOC_NOPM,
8410 MSM_BACKEND_DAI_SEC_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308411 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8412 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008413 SOC_DOUBLE_EXT("SEC_TDM_TX_2", SND_SOC_NOPM,
8414 MSM_BACKEND_DAI_SEC_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308415 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8416 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008417 SOC_DOUBLE_EXT("SEC_TDM_TX_3", SND_SOC_NOPM,
8418 MSM_BACKEND_DAI_SEC_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308419 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8420 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008421 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
8422 MSM_BACKEND_DAI_TERT_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308423 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8424 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008425 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
8426 MSM_BACKEND_DAI_TERT_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308427 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8428 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008429 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
8430 MSM_BACKEND_DAI_TERT_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308431 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8432 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008433 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
8434 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308435 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8436 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008437 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
8438 MSM_BACKEND_DAI_QUAT_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308439 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8440 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008441 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
8442 MSM_BACKEND_DAI_QUAT_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308443 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8444 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008445 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
8446 MSM_BACKEND_DAI_QUAT_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308447 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8448 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008449 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
8450 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05308451 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8452 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008453 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
8454 MSM_BACKEND_DAI_QUIN_TDM_TX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05308455 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8456 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008457 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
8458 MSM_BACKEND_DAI_QUIN_TDM_TX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05308459 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8460 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008461 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
8462 MSM_BACKEND_DAI_QUIN_TDM_TX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05308463 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8464 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008465 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
8466 MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308467 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8468 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008469 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
8470 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308471 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8472 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008473 SOC_DOUBLE_EXT("INT2_MI2S_TX", SND_SOC_NOPM,
8474 MSM_BACKEND_DAI_INT2_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308475 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8476 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008477 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
8478 MSM_BACKEND_DAI_INT3_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308479 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8480 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008481 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
8482 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308483 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8484 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008485 SOC_DOUBLE_EXT("USB_AUDIO_TX", SND_SOC_NOPM,
8486 MSM_BACKEND_DAI_USB_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308487 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
8488 msm_routing_put_audio_mixer),
8489};
8490
8491static const struct snd_kcontrol_new mmul5_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08008492 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
8493 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308494 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8495 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008496 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
8497 MSM_BACKEND_DAI_INT_FM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308498 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8499 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008500 SOC_DOUBLE_EXT("MI2S_TX", SND_SOC_NOPM,
8501 MSM_BACKEND_DAI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308502 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8503 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008504 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
8505 MSM_BACKEND_DAI_AFE_PCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308506 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8507 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008508 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
8509 MSM_BACKEND_DAI_INT_BT_SCO_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308510 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8511 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008512 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
8513 MSM_BACKEND_DAI_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308514 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8515 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008516 SOC_DOUBLE_EXT("SEC_AUX_PCM_TX", SND_SOC_NOPM,
8517 MSM_BACKEND_DAI_SEC_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308518 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8519 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008520 SOC_DOUBLE_EXT("TERT_AUX_PCM_TX", SND_SOC_NOPM,
8521 MSM_BACKEND_DAI_TERT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308522 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8523 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008524 SOC_DOUBLE_EXT("QUAT_AUX_PCM_TX", SND_SOC_NOPM,
8525 MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308526 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8527 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008528 SOC_DOUBLE_EXT("QUIN_AUX_PCM_TX", SND_SOC_NOPM,
8529 MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
Rohit Kumara5077932017-09-10 22:05:05 +05308530 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8531 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008532 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
8533 MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308534 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8535 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008536 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
8537 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308538 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8539 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008540 SOC_DOUBLE_EXT("INT2_MI2S_TX", SND_SOC_NOPM,
8541 MSM_BACKEND_DAI_INT2_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308542 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8543 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008544 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
8545 MSM_BACKEND_DAI_INT3_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308546 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8547 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008548 SOC_DOUBLE_EXT("PRI_TDM_TX_0", SND_SOC_NOPM,
8549 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308550 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8551 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008552 SOC_DOUBLE_EXT("PRI_TDM_TX_1", SND_SOC_NOPM,
8553 MSM_BACKEND_DAI_PRI_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308554 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8555 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008556 SOC_DOUBLE_EXT("PRI_TDM_TX_2", SND_SOC_NOPM,
8557 MSM_BACKEND_DAI_PRI_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308558 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8559 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008560 SOC_DOUBLE_EXT("PRI_TDM_TX_3", SND_SOC_NOPM,
8561 MSM_BACKEND_DAI_PRI_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308562 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8563 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008564 SOC_DOUBLE_EXT("SEC_TDM_TX_0", SND_SOC_NOPM,
8565 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308566 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8567 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008568 SOC_DOUBLE_EXT("SEC_TDM_TX_1", SND_SOC_NOPM,
8569 MSM_BACKEND_DAI_SEC_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308570 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8571 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008572 SOC_DOUBLE_EXT("SEC_TDM_TX_2", SND_SOC_NOPM,
8573 MSM_BACKEND_DAI_SEC_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308574 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8575 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008576 SOC_DOUBLE_EXT("SEC_TDM_TX_3", SND_SOC_NOPM,
8577 MSM_BACKEND_DAI_SEC_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308578 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8579 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008580 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
8581 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308582 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8583 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008584 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
8585 MSM_BACKEND_DAI_TERT_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308586 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8587 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008588 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
8589 MSM_BACKEND_DAI_TERT_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308590 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8591 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008592 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
8593 MSM_BACKEND_DAI_TERT_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308594 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8595 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008596 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
8597 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308598 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8599 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008600 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
8601 MSM_BACKEND_DAI_QUAT_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308602 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8603 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008604 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
8605 MSM_BACKEND_DAI_QUAT_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308606 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8607 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008608 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
8609 MSM_BACKEND_DAI_QUAT_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308610 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8611 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008612 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
8613 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05308614 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8615 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008616 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
8617 MSM_BACKEND_DAI_QUIN_TDM_TX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05308618 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8619 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008620 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
8621 MSM_BACKEND_DAI_QUIN_TDM_TX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05308622 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8623 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008624 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
8625 MSM_BACKEND_DAI_QUIN_TDM_TX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05308626 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8627 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008628 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
8629 MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308630 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8631 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008632 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
8633 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308634 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8635 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008636 SOC_DOUBLE_EXT("SLIM_7_TX", SND_SOC_NOPM,
8637 MSM_BACKEND_DAI_SLIMBUS_7_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308638 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8639 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008640 SOC_DOUBLE_EXT("SLIM_8_TX", SND_SOC_NOPM,
8641 MSM_BACKEND_DAI_SLIMBUS_8_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308642 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8643 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008644 SOC_DOUBLE_EXT("USB_AUDIO_TX", SND_SOC_NOPM,
8645 MSM_BACKEND_DAI_USB_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308646 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
8647 msm_routing_put_audio_mixer),
8648};
8649
8650static const struct snd_kcontrol_new mmul6_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08008651 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
8652 MSM_BACKEND_DAI_INT_FM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308653 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8654 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008655 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
8656 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308657 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8658 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008659 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
8660 MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308661 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8662 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008663 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
8664 MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308665 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8666 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008667 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
8668 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308669 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8670 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008671 SOC_DOUBLE_EXT("INT2_MI2S_TX", SND_SOC_NOPM,
8672 MSM_BACKEND_DAI_INT2_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308673 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8674 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008675 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
8676 MSM_BACKEND_DAI_INT3_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308677 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8678 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008679 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
8680 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308681 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8682 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008683 SOC_DOUBLE_EXT("QUIN_MI2S_TX", SND_SOC_NOPM,
8684 MSM_BACKEND_DAI_QUINARY_MI2S_TX,
Rohit Kumara5077932017-09-10 22:05:05 +05308685 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8686 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008687 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
8688 MSM_BACKEND_DAI_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308689 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8690 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008691 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
8692 MSM_BACKEND_DAI_SEC_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308693 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8694 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008695 SOC_DOUBLE_EXT("TERT_AUXPCM_UL_TX", SND_SOC_NOPM,
8696 MSM_BACKEND_DAI_TERT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308697 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8698 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008699 SOC_DOUBLE_EXT("QUAT_AUXPCM_UL_TX", SND_SOC_NOPM,
8700 MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308701 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8702 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008703 SOC_DOUBLE_EXT("PRI_TDM_TX_0", SND_SOC_NOPM,
8704 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308705 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8706 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008707 SOC_DOUBLE_EXT("PRI_TDM_TX_1", SND_SOC_NOPM,
8708 MSM_BACKEND_DAI_PRI_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308709 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8710 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008711 SOC_DOUBLE_EXT("PRI_TDM_TX_2", SND_SOC_NOPM,
8712 MSM_BACKEND_DAI_PRI_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308713 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8714 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008715 SOC_DOUBLE_EXT("PRI_TDM_TX_3", SND_SOC_NOPM,
8716 MSM_BACKEND_DAI_PRI_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308717 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8718 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008719 SOC_DOUBLE_EXT("SEC_TDM_TX_0", SND_SOC_NOPM,
8720 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308721 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8722 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008723 SOC_DOUBLE_EXT("SEC_TDM_TX_1", SND_SOC_NOPM,
8724 MSM_BACKEND_DAI_SEC_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308725 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8726 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008727 SOC_DOUBLE_EXT("SEC_TDM_TX_2", SND_SOC_NOPM,
8728 MSM_BACKEND_DAI_SEC_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308729 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8730 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008731 SOC_DOUBLE_EXT("SEC_TDM_TX_3", SND_SOC_NOPM,
8732 MSM_BACKEND_DAI_SEC_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308733 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8734 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008735 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
8736 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308737 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8738 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008739 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
8740 MSM_BACKEND_DAI_TERT_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308741 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8742 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008743 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
8744 MSM_BACKEND_DAI_TERT_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308745 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8746 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008747 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
8748 MSM_BACKEND_DAI_TERT_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308749 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8750 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008751 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
8752 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308753 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8754 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008755 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
8756 MSM_BACKEND_DAI_QUAT_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308757 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8758 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008759 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
8760 MSM_BACKEND_DAI_QUAT_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308761 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8762 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008763 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
8764 MSM_BACKEND_DAI_QUAT_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308765 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8766 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008767 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
8768 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05308769 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8770 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008771 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
8772 MSM_BACKEND_DAI_QUIN_TDM_TX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05308773 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8774 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008775 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
8776 MSM_BACKEND_DAI_QUIN_TDM_TX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05308777 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8778 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008779 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
8780 MSM_BACKEND_DAI_QUIN_TDM_TX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05308781 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8782 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008783 SOC_DOUBLE_EXT("USB_AUDIO_TX", SND_SOC_NOPM,
8784 MSM_BACKEND_DAI_USB_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308785 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
8786 msm_routing_put_audio_mixer),
8787};
8788
8789static const struct snd_kcontrol_new mmul8_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08008790 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
8791 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308792 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8793 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008794 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
8795 MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308796 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8797 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008798 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
8799 MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308800 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8801 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008802 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
8803 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308804 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8805 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008806 SOC_DOUBLE_EXT("INT2_MI2S_TX", SND_SOC_NOPM,
8807 MSM_BACKEND_DAI_INT2_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308808 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8809 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008810 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
8811 MSM_BACKEND_DAI_INT3_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308812 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8813 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008814 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
8815 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308816 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8817 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008818 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
8819 MSM_BACKEND_DAI_INT_FM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308820 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8821 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008822 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
8823 MSM_BACKEND_DAI_INT_BT_SCO_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308824 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8825 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008826 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
8827 MSM_BACKEND_DAI_AFE_PCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308828 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8829 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008830 SOC_DOUBLE_EXT("VOC_REC_DL", SND_SOC_NOPM,
8831 MSM_BACKEND_DAI_INCALL_RECORD_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308832 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8833 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008834 SOC_DOUBLE_EXT("VOC_REC_UL", SND_SOC_NOPM,
8835 MSM_BACKEND_DAI_INCALL_RECORD_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308836 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8837 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008838 SOC_DOUBLE_EXT("SLIM_6_TX", SND_SOC_NOPM,
8839 MSM_BACKEND_DAI_SLIMBUS_6_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308840 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8841 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008842 SOC_DOUBLE_EXT("PRI_TDM_TX_0", SND_SOC_NOPM,
8843 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308844 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8845 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008846 SOC_DOUBLE_EXT("PRI_TDM_TX_1", SND_SOC_NOPM,
8847 MSM_BACKEND_DAI_PRI_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308848 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8849 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008850 SOC_DOUBLE_EXT("PRI_TDM_TX_2", SND_SOC_NOPM,
8851 MSM_BACKEND_DAI_PRI_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308852 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8853 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008854 SOC_DOUBLE_EXT("PRI_TDM_TX_3", SND_SOC_NOPM,
8855 MSM_BACKEND_DAI_PRI_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308856 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8857 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008858 SOC_DOUBLE_EXT("SEC_TDM_TX_0", SND_SOC_NOPM,
8859 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308860 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8861 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008862 SOC_DOUBLE_EXT("SEC_TDM_TX_1", SND_SOC_NOPM,
8863 MSM_BACKEND_DAI_SEC_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308864 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8865 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008866 SOC_DOUBLE_EXT("SEC_TDM_TX_2", SND_SOC_NOPM,
8867 MSM_BACKEND_DAI_SEC_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308868 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8869 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008870 SOC_DOUBLE_EXT("SEC_TDM_TX_3", SND_SOC_NOPM,
8871 MSM_BACKEND_DAI_SEC_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308872 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8873 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008874 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
8875 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308876 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8877 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008878 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
8879 MSM_BACKEND_DAI_TERT_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308880 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8881 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008882 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
8883 MSM_BACKEND_DAI_TERT_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308884 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8885 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008886 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
8887 MSM_BACKEND_DAI_TERT_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308888 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8889 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008890 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
8891 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308892 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8893 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008894 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
8895 MSM_BACKEND_DAI_QUAT_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308896 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8897 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008898 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
8899 MSM_BACKEND_DAI_QUAT_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308900 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8901 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008902 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
8903 MSM_BACKEND_DAI_QUAT_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308904 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8905 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008906 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
8907 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05308908 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8909 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008910 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
8911 MSM_BACKEND_DAI_QUIN_TDM_TX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05308912 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8913 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008914 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
8915 MSM_BACKEND_DAI_QUIN_TDM_TX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05308916 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8917 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008918 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
8919 MSM_BACKEND_DAI_QUIN_TDM_TX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05308920 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8921 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008922 SOC_DOUBLE_EXT("SLIM_7_TX", SND_SOC_NOPM,
8923 MSM_BACKEND_DAI_SLIMBUS_7_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308924 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8925 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008926 SOC_DOUBLE_EXT("USB_AUDIO_TX", SND_SOC_NOPM,
8927 MSM_BACKEND_DAI_USB_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308928 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
8929 msm_routing_put_audio_mixer),
8930};
8931
Asish Bhattacharya34504582017-08-08 12:55:01 +05308932static const struct snd_kcontrol_new mmul16_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08008933 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
8934 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya34504582017-08-08 12:55:01 +05308935 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
8936 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008937 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
8938 MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya34504582017-08-08 12:55:01 +05308939 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
8940 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008941 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
8942 MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
Asish Bhattacharya34504582017-08-08 12:55:01 +05308943 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
8944 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008945 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
8946 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya34504582017-08-08 12:55:01 +05308947 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
8948 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008949 SOC_DOUBLE_EXT("INT2_MI2S_TX", SND_SOC_NOPM,
8950 MSM_BACKEND_DAI_INT2_MI2S_TX,
Asish Bhattacharya34504582017-08-08 12:55:01 +05308951 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
8952 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008953 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
8954 MSM_BACKEND_DAI_INT3_MI2S_TX,
Asish Bhattacharya34504582017-08-08 12:55:01 +05308955 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
8956 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008957 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
8958 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya34504582017-08-08 12:55:01 +05308959 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
8960 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008961 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
8962 MSM_BACKEND_DAI_INT_FM_TX,
Asish Bhattacharya34504582017-08-08 12:55:01 +05308963 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
8964 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008965 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
8966 MSM_BACKEND_DAI_INT_BT_SCO_TX,
Asish Bhattacharya34504582017-08-08 12:55:01 +05308967 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
8968 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008969 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
8970 MSM_BACKEND_DAI_AFE_PCM_TX,
Asish Bhattacharya34504582017-08-08 12:55:01 +05308971 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
8972 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008973 SOC_DOUBLE_EXT("VOC_REC_DL", SND_SOC_NOPM,
8974 MSM_BACKEND_DAI_INCALL_RECORD_RX,
Asish Bhattacharya34504582017-08-08 12:55:01 +05308975 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
8976 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008977 SOC_DOUBLE_EXT("VOC_REC_UL", SND_SOC_NOPM,
8978 MSM_BACKEND_DAI_INCALL_RECORD_TX,
Asish Bhattacharya34504582017-08-08 12:55:01 +05308979 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
8980 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008981 SOC_DOUBLE_EXT("SLIM_6_TX", SND_SOC_NOPM,
8982 MSM_BACKEND_DAI_SLIMBUS_6_TX,
Asish Bhattacharya34504582017-08-08 12:55:01 +05308983 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
8984 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008985 SOC_DOUBLE_EXT("PRI_TDM_TX_0", SND_SOC_NOPM,
8986 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya34504582017-08-08 12:55:01 +05308987 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
8988 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008989 SOC_DOUBLE_EXT("PRI_TDM_TX_1", SND_SOC_NOPM,
8990 MSM_BACKEND_DAI_PRI_TDM_TX_1,
Asish Bhattacharya34504582017-08-08 12:55:01 +05308991 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
8992 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008993 SOC_DOUBLE_EXT("PRI_TDM_TX_2", SND_SOC_NOPM,
8994 MSM_BACKEND_DAI_PRI_TDM_TX_2,
Asish Bhattacharya34504582017-08-08 12:55:01 +05308995 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
8996 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08008997 SOC_DOUBLE_EXT("PRI_TDM_TX_3", SND_SOC_NOPM,
8998 MSM_BACKEND_DAI_PRI_TDM_TX_3,
Asish Bhattacharya34504582017-08-08 12:55:01 +05308999 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
9000 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009001 SOC_DOUBLE_EXT("SEC_TDM_TX_0", SND_SOC_NOPM,
9002 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya34504582017-08-08 12:55:01 +05309003 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
9004 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009005 SOC_DOUBLE_EXT("SEC_TDM_TX_1", SND_SOC_NOPM,
9006 MSM_BACKEND_DAI_SEC_TDM_TX_1,
Asish Bhattacharya34504582017-08-08 12:55:01 +05309007 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
9008 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009009 SOC_DOUBLE_EXT("SEC_TDM_TX_2", SND_SOC_NOPM,
9010 MSM_BACKEND_DAI_SEC_TDM_TX_2,
Asish Bhattacharya34504582017-08-08 12:55:01 +05309011 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
9012 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009013 SOC_DOUBLE_EXT("SEC_TDM_TX_3", SND_SOC_NOPM,
9014 MSM_BACKEND_DAI_SEC_TDM_TX_3,
Asish Bhattacharya34504582017-08-08 12:55:01 +05309015 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
9016 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009017 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
9018 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya34504582017-08-08 12:55:01 +05309019 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
9020 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009021 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
9022 MSM_BACKEND_DAI_TERT_TDM_TX_1,
Asish Bhattacharya34504582017-08-08 12:55:01 +05309023 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
9024 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009025 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
9026 MSM_BACKEND_DAI_TERT_TDM_TX_2,
Asish Bhattacharya34504582017-08-08 12:55:01 +05309027 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
9028 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009029 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
9030 MSM_BACKEND_DAI_TERT_TDM_TX_3,
Asish Bhattacharya34504582017-08-08 12:55:01 +05309031 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
9032 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009033 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
9034 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya34504582017-08-08 12:55:01 +05309035 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
9036 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009037 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
9038 MSM_BACKEND_DAI_QUAT_TDM_TX_1,
Asish Bhattacharya34504582017-08-08 12:55:01 +05309039 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
9040 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009041 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
9042 MSM_BACKEND_DAI_QUAT_TDM_TX_2,
Asish Bhattacharya34504582017-08-08 12:55:01 +05309043 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
9044 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009045 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
9046 MSM_BACKEND_DAI_QUAT_TDM_TX_3,
Asish Bhattacharya34504582017-08-08 12:55:01 +05309047 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
9048 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009049 SOC_DOUBLE_EXT("SLIM_7_TX", SND_SOC_NOPM,
9050 MSM_BACKEND_DAI_SLIMBUS_7_TX,
Asish Bhattacharya34504582017-08-08 12:55:01 +05309051 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
9052 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009053 SOC_DOUBLE_EXT("USB_AUDIO_TX", SND_SOC_NOPM,
9054 MSM_BACKEND_DAI_USB_TX,
Asish Bhattacharya34504582017-08-08 12:55:01 +05309055 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
9056 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009057 SOC_DOUBLE_EXT("MI2S_TX", SND_SOC_NOPM,
9058 MSM_BACKEND_DAI_MI2S_TX,
Asish Bhattacharya34504582017-08-08 12:55:01 +05309059 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
9060 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009061 SOC_DOUBLE_EXT("AUX_PCM_TX", SND_SOC_NOPM,
9062 MSM_BACKEND_DAI_AUXPCM_TX,
Asish Bhattacharya34504582017-08-08 12:55:01 +05309063 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
9064 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009065 SOC_DOUBLE_EXT("SEC_AUX_PCM_TX", SND_SOC_NOPM,
9066 MSM_BACKEND_DAI_SEC_AUXPCM_TX,
Asish Bhattacharya34504582017-08-08 12:55:01 +05309067 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
9068 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009069 SOC_DOUBLE_EXT("QUAT_AUX_PCM_TX", SND_SOC_NOPM,
9070 MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
Asish Bhattacharya34504582017-08-08 12:55:01 +05309071 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
9072 msm_routing_put_audio_mixer),
9073};
9074
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309075static const struct snd_kcontrol_new mmul9_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009076 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
9077 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309078 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
9079 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009080 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
9081 MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309082 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
9083 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009084 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
9085 MSM_BACKEND_DAI_INT_FM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309086 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
9087 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009088 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
9089 MSM_BACKEND_DAI_INT_BT_SCO_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309090 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
9091 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009092 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
9093 MSM_BACKEND_DAI_AFE_PCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309094 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
9095 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009096 SOC_DOUBLE_EXT("VOC_REC_DL", SND_SOC_NOPM,
9097 MSM_BACKEND_DAI_INCALL_RECORD_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309098 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
9099 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009100 SOC_DOUBLE_EXT("VOC_REC_UL", SND_SOC_NOPM,
9101 MSM_BACKEND_DAI_INCALL_RECORD_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309102 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
9103 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009104 SOC_DOUBLE_EXT("SLIM_6_TX", SND_SOC_NOPM,
9105 MSM_BACKEND_DAI_SLIMBUS_6_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309106 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
9107 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009108 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
9109 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309110 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
9111 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009112 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
9113 MSM_BACKEND_DAI_TERT_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309114 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
9115 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009116 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
9117 MSM_BACKEND_DAI_TERT_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309118 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
9119 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009120 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
9121 MSM_BACKEND_DAI_TERT_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309122 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
9123 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009124 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
9125 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309126 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
9127 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009128 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
9129 MSM_BACKEND_DAI_QUAT_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309130 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
9131 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009132 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
9133 MSM_BACKEND_DAI_QUAT_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309134 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
9135 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009136 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
9137 MSM_BACKEND_DAI_QUAT_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309138 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
9139 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009140 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
9141 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05309142 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
9143 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009144 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
9145 MSM_BACKEND_DAI_QUIN_TDM_TX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05309146 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
9147 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009148 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
9149 MSM_BACKEND_DAI_QUIN_TDM_TX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05309150 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
9151 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009152 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
9153 MSM_BACKEND_DAI_QUIN_TDM_TX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05309154 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
9155 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309156};
9157
Laxminath Kasam38070be2017-08-17 18:21:59 +05309158static const struct snd_kcontrol_new mmul10_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009159 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
9160 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Laxminath Kasam38070be2017-08-17 18:21:59 +05309161 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9162 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009163 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
9164 MSM_BACKEND_DAI_PRI_MI2S_TX,
Laxminath Kasam38070be2017-08-17 18:21:59 +05309165 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9166 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009167 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
9168 MSM_BACKEND_DAI_INT_FM_TX,
Laxminath Kasam38070be2017-08-17 18:21:59 +05309169 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9170 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009171 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
9172 MSM_BACKEND_DAI_INT_BT_SCO_TX,
Laxminath Kasam38070be2017-08-17 18:21:59 +05309173 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9174 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009175 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
9176 MSM_BACKEND_DAI_AFE_PCM_TX,
Laxminath Kasam38070be2017-08-17 18:21:59 +05309177 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9178 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009179 SOC_DOUBLE_EXT("VOC_REC_DL", SND_SOC_NOPM,
9180 MSM_BACKEND_DAI_INCALL_RECORD_RX,
Laxminath Kasam38070be2017-08-17 18:21:59 +05309181 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9182 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009183 SOC_DOUBLE_EXT("VOC_REC_UL", SND_SOC_NOPM,
9184 MSM_BACKEND_DAI_INCALL_RECORD_TX,
Laxminath Kasam38070be2017-08-17 18:21:59 +05309185 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9186 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009187 SOC_DOUBLE_EXT("SLIM_6_TX", SND_SOC_NOPM,
9188 MSM_BACKEND_DAI_SLIMBUS_6_TX,
Laxminath Kasam38070be2017-08-17 18:21:59 +05309189 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9190 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009191 SOC_DOUBLE_EXT("SLIM_7_TX", SND_SOC_NOPM,
9192 MSM_BACKEND_DAI_SLIMBUS_7_TX,
Vikram Panduranga72863152017-09-06 15:47:35 -07009193 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9194 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009195 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
9196 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Laxminath Kasam38070be2017-08-17 18:21:59 +05309197 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9198 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009199 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
9200 MSM_BACKEND_DAI_TERT_TDM_TX_1,
Laxminath Kasam38070be2017-08-17 18:21:59 +05309201 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9202 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009203 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
9204 MSM_BACKEND_DAI_TERT_TDM_TX_2,
Laxminath Kasam38070be2017-08-17 18:21:59 +05309205 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9206 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009207 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
9208 MSM_BACKEND_DAI_TERT_TDM_TX_3,
Laxminath Kasam38070be2017-08-17 18:21:59 +05309209 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9210 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009211 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
9212 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Laxminath Kasam38070be2017-08-17 18:21:59 +05309213 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9214 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009215 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
9216 MSM_BACKEND_DAI_QUAT_TDM_TX_1,
Laxminath Kasam38070be2017-08-17 18:21:59 +05309217 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9218 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009219 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
9220 MSM_BACKEND_DAI_QUAT_TDM_TX_2,
Laxminath Kasam38070be2017-08-17 18:21:59 +05309221 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9222 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009223 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
9224 MSM_BACKEND_DAI_QUAT_TDM_TX_3,
Laxminath Kasam38070be2017-08-17 18:21:59 +05309225 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9226 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009227 SOC_DOUBLE_EXT("USB_AUDIO_TX", SND_SOC_NOPM,
9228 MSM_BACKEND_DAI_USB_TX,
Laxminath Kasam38070be2017-08-17 18:21:59 +05309229 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9230 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009231 SOC_DOUBLE_EXT("MI2S_TX", SND_SOC_NOPM,
9232 MSM_BACKEND_DAI_MI2S_TX,
Vikram Panduranga016c49f2017-09-11 15:15:56 -07009233 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9234 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009235 SOC_DOUBLE_EXT("AUX_PCM_TX", SND_SOC_NOPM,
9236 MSM_BACKEND_DAI_AUXPCM_TX,
Vikram Panduranga016c49f2017-09-11 15:15:56 -07009237 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9238 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009239 SOC_DOUBLE_EXT("SEC_AUX_PCM_TX", SND_SOC_NOPM,
9240 MSM_BACKEND_DAI_SEC_AUXPCM_TX,
Vikram Panduranga016c49f2017-09-11 15:15:56 -07009241 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9242 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009243 SOC_DOUBLE_EXT("TERT_AUX_PCM_TX", SND_SOC_NOPM,
9244 MSM_BACKEND_DAI_TERT_AUXPCM_TX,
Vikram Panduranga016c49f2017-09-11 15:15:56 -07009245 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9246 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009247 SOC_DOUBLE_EXT("QUAT_AUX_PCM_TX", SND_SOC_NOPM,
9248 MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
Vikram Panduranga016c49f2017-09-11 15:15:56 -07009249 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9250 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009251 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
9252 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Vikram Panduranga016c49f2017-09-11 15:15:56 -07009253 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9254 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009255 SOC_DOUBLE_EXT("INT2_MI2S_TX", SND_SOC_NOPM,
9256 MSM_BACKEND_DAI_INT2_MI2S_TX,
Vikram Panduranga016c49f2017-09-11 15:15:56 -07009257 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9258 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009259 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
9260 MSM_BACKEND_DAI_INT3_MI2S_TX,
Vikram Panduranga016c49f2017-09-11 15:15:56 -07009261 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
9262 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05309263};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309264static const struct snd_kcontrol_new mmul17_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009265 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
9266 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309267 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
9268 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009269 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
9270 MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309271 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
9272 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009273 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
9274 MSM_BACKEND_DAI_INT3_MI2S_TX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05309275 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
9276 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009277 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
9278 MSM_BACKEND_DAI_INT_FM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309279 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
9280 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009281 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
9282 MSM_BACKEND_DAI_INT_BT_SCO_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309283 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
9284 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009285 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
9286 MSM_BACKEND_DAI_AFE_PCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309287 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
9288 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009289 SOC_DOUBLE_EXT("VOC_REC_DL", SND_SOC_NOPM,
9290 MSM_BACKEND_DAI_INCALL_RECORD_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309291 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
9292 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009293 SOC_DOUBLE_EXT("VOC_REC_UL", SND_SOC_NOPM,
9294 MSM_BACKEND_DAI_INCALL_RECORD_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309295 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
9296 msm_routing_put_audio_mixer),
9297};
9298
9299static const struct snd_kcontrol_new mmul18_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009300 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
9301 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309302 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
9303 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009304 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
9305 MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309306 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
9307 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009308 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
9309 MSM_BACKEND_DAI_INT3_MI2S_TX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05309310 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
9311 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009312 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
9313 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309314 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
9315 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009316 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
9317 MSM_BACKEND_DAI_INT_FM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309318 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
9319 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009320 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
9321 MSM_BACKEND_DAI_INT_BT_SCO_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309322 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
9323 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009324 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
9325 MSM_BACKEND_DAI_AFE_PCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309326 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
9327 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009328 SOC_DOUBLE_EXT("VOC_REC_DL", SND_SOC_NOPM,
9329 MSM_BACKEND_DAI_INCALL_RECORD_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309330 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
9331 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009332 SOC_DOUBLE_EXT("VOC_REC_UL", SND_SOC_NOPM,
9333 MSM_BACKEND_DAI_INCALL_RECORD_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309334 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
9335 msm_routing_put_audio_mixer),
9336};
9337
9338static const struct snd_kcontrol_new mmul19_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009339 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
9340 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309341 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
9342 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009343 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
9344 MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309345 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
9346 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009347 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
9348 MSM_BACKEND_DAI_INT3_MI2S_TX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05309349 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
9350 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009351 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
9352 MSM_BACKEND_DAI_INT_FM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309353 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
9354 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009355 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
9356 MSM_BACKEND_DAI_INT_BT_SCO_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309357 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
9358 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009359 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
9360 MSM_BACKEND_DAI_AFE_PCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309361 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
9362 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009363 SOC_DOUBLE_EXT("VOC_REC_DL", SND_SOC_NOPM,
9364 MSM_BACKEND_DAI_INCALL_RECORD_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309365 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
9366 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009367 SOC_DOUBLE_EXT("VOC_REC_UL", SND_SOC_NOPM,
9368 MSM_BACKEND_DAI_INCALL_RECORD_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309369 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
9370 msm_routing_put_audio_mixer),
9371};
9372
9373static const struct snd_kcontrol_new mmul20_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009374 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
9375 MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309376 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9377 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009378 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
9379 MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309380 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9381 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009382 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
9383 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309384 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9385 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009386 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
9387 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309388 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9389 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009390 SOC_DOUBLE_EXT("QUIN_MI2S_TX", SND_SOC_NOPM,
9391 MSM_BACKEND_DAI_QUINARY_MI2S_TX,
Rohit Kumara5077932017-09-10 22:05:05 +05309392 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9393 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009394 SOC_DOUBLE_EXT("PRI_TDM_TX_0", SND_SOC_NOPM,
9395 MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309396 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9397 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009398 SOC_DOUBLE_EXT("PRI_TDM_TX_1", SND_SOC_NOPM,
9399 MSM_BACKEND_DAI_PRI_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309400 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9401 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009402 SOC_DOUBLE_EXT("PRI_TDM_TX_2", SND_SOC_NOPM,
9403 MSM_BACKEND_DAI_PRI_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309404 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9405 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009406 SOC_DOUBLE_EXT("PRI_TDM_TX_3", SND_SOC_NOPM,
9407 MSM_BACKEND_DAI_PRI_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309408 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9409 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009410 SOC_DOUBLE_EXT("SEC_TDM_TX_0", SND_SOC_NOPM,
9411 MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309412 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9413 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009414 SOC_DOUBLE_EXT("SEC_TDM_TX_1", SND_SOC_NOPM,
9415 MSM_BACKEND_DAI_SEC_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309416 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9417 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009418 SOC_DOUBLE_EXT("SEC_TDM_TX_2", SND_SOC_NOPM,
9419 MSM_BACKEND_DAI_SEC_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309420 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9421 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009422 SOC_DOUBLE_EXT("SEC_TDM_TX_3", SND_SOC_NOPM,
9423 MSM_BACKEND_DAI_SEC_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309424 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9425 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009426 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
9427 MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309428 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9429 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009430 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
9431 MSM_BACKEND_DAI_TERT_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309432 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9433 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009434 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
9435 MSM_BACKEND_DAI_TERT_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309436 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9437 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009438 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
9439 MSM_BACKEND_DAI_TERT_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309440 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9441 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009442 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
9443 MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309444 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9445 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009446 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
9447 MSM_BACKEND_DAI_QUAT_TDM_TX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309448 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9449 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009450 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
9451 MSM_BACKEND_DAI_QUAT_TDM_TX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309452 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9453 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009454 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
9455 MSM_BACKEND_DAI_QUAT_TDM_TX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309456 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9457 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009458 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
9459 MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Rohit Kumara5077932017-09-10 22:05:05 +05309460 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9461 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009462 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
9463 MSM_BACKEND_DAI_QUIN_TDM_TX_1,
Rohit Kumara5077932017-09-10 22:05:05 +05309464 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9465 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009466 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
9467 MSM_BACKEND_DAI_QUIN_TDM_TX_2,
Rohit Kumara5077932017-09-10 22:05:05 +05309468 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9469 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009470 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
9471 MSM_BACKEND_DAI_QUIN_TDM_TX_3,
Rohit Kumara5077932017-09-10 22:05:05 +05309472 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
9473 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309474};
9475
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05309476static const struct snd_kcontrol_new mmul28_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009477 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
9478 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05309479 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
9480 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009481 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
9482 MSM_BACKEND_DAI_PRI_MI2S_TX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05309483 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
9484 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009485 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
9486 MSM_BACKEND_DAI_INT3_MI2S_TX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05309487 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
9488 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009489 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
9490 MSM_BACKEND_DAI_INT_FM_TX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05309491 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
9492 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009493 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
9494 MSM_BACKEND_DAI_INT_BT_SCO_TX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05309495 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
9496 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009497 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
9498 MSM_BACKEND_DAI_AFE_PCM_TX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05309499 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
9500 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009501 SOC_DOUBLE_EXT("VOC_REC_DL", SND_SOC_NOPM,
9502 MSM_BACKEND_DAI_INCALL_RECORD_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05309503 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
9504 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009505 SOC_DOUBLE_EXT("VOC_REC_UL", SND_SOC_NOPM,
9506 MSM_BACKEND_DAI_INCALL_RECORD_TX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05309507 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
9508 msm_routing_put_audio_mixer),
9509};
9510
9511static const struct snd_kcontrol_new mmul29_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009512 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
9513 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05309514 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
9515 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009516 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
9517 MSM_BACKEND_DAI_PRI_MI2S_TX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05309518 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
9519 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009520 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
9521 MSM_BACKEND_DAI_INT3_MI2S_TX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05309522 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
9523 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009524 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
9525 MSM_BACKEND_DAI_INT_FM_TX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05309526 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
9527 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009528 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
9529 MSM_BACKEND_DAI_INT_BT_SCO_TX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05309530 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
9531 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009532 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
9533 MSM_BACKEND_DAI_AFE_PCM_TX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05309534 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
9535 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009536 SOC_DOUBLE_EXT("VOC_REC_DL", SND_SOC_NOPM,
9537 MSM_BACKEND_DAI_INCALL_RECORD_RX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05309538 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
9539 msm_routing_put_audio_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009540 SOC_DOUBLE_EXT("VOC_REC_UL", SND_SOC_NOPM,
9541 MSM_BACKEND_DAI_INCALL_RECORD_TX,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05309542 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
9543 msm_routing_put_audio_mixer),
9544};
9545
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309546static const struct snd_kcontrol_new pri_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009547 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
9548 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309549 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9550 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009551 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
9552 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309553 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9554 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009555 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
9556 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309557 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9558 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009559 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
9560 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309561 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
9562 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009563 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
9564 MSM_BACKEND_DAI_PRI_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309565 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9566 msm_routing_put_voice_mixer),
9567};
9568
9569static const struct snd_kcontrol_new sec_i2s_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009570 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
9571 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309572 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9573 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009574 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
9575 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309576 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
9577 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009578 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
9579 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309580 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9581 msm_routing_put_voice_mixer),
9582};
9583
9584static const struct snd_kcontrol_new sec_mi2s_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009585 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
9586 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309587 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9588 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009589 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
9590 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309591 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
9592 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009593 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
9594 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309595 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9596 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009597 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
9598 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309599 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9600 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009601 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
9602 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309603 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9604 msm_routing_put_voice_mixer),
9605};
9606
9607static const struct snd_kcontrol_new slimbus_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009608 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
9609 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309610 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9611 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009612 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
9613 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309614 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
9615 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009616 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
9617 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309618 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9619 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009620 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
9621 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309622 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9623 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009624 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
9625 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309626 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9627 msm_routing_put_voice_mixer),
9628};
9629
9630static const struct snd_kcontrol_new slimbus_6_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009631 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
9632MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309633 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9634 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009635 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
9636MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309637 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
9638 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009639 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
9640MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309641 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9642 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009643 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
9644MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309645 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9646 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009647 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
9648MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309649 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9650 msm_routing_put_voice_mixer),
9651};
9652
9653static const struct snd_kcontrol_new usb_audio_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009654 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
9655 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309656 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9657 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009658 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
9659 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309660 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
9661 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009662 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
9663 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309664 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9665 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009666 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
9667 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309668 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9669 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009670 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
9671 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309672 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9673 msm_routing_put_voice_mixer),
9674};
9675
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08009676static const struct snd_kcontrol_new display_port_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009677 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
9678MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08009679 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9680 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009681 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
9682MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08009683 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
9684 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009685 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
9686MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08009687 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9688 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009689 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
9690MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08009691 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9692 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009693 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
9694MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08009695 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9696 msm_routing_put_voice_mixer),
9697};
9698
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309699static const struct snd_kcontrol_new bt_sco_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009700 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
9701 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309702 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9703 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009704 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
9705 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309706 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
9707 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009708 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
9709 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309710 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9711 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009712 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
9713 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309714 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9715 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009716 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
9717 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309718 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9719 msm_routing_put_voice_mixer),
9720};
9721
9722static const struct snd_kcontrol_new mi2s_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009723 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
9724 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309725 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9726 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009727 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
9728 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309729 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
9730 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009731 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
9732 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309733 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9734 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009735 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
9736 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309737 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9738 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009739 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
9740 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309741 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9742 msm_routing_put_voice_mixer),
9743};
9744
9745static const struct snd_kcontrol_new pri_mi2s_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009746 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
9747MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309748 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9749 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009750 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
9751MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309752 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
9753 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009754 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
9755MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309756 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9757 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009758 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
9759MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309760 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9761 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009762 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
9763MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309764 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9765 msm_routing_put_voice_mixer),
9766};
9767
9768static const struct snd_kcontrol_new int0_mi2s_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009769 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
9770MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309771 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9772 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009773 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
9774MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309775 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
9776 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009777 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
9778MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309779 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9780 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009781 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
9782MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309783 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9784 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009785 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
9786MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309787 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9788 msm_routing_put_voice_mixer),
9789};
9790
9791static const struct snd_kcontrol_new int4_mi2s_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009792 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
9793 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309794 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9795 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009796 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
9797 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309798 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
9799 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009800 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
9801 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309802 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9803 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009804 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
9805 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309806 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9807 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009808 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
9809 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309810 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9811 msm_routing_put_voice_mixer),
9812};
9813
9814static const struct snd_kcontrol_new tert_mi2s_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009815 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
9816 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309817 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9818 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009819 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
9820 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309821 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
9822 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009823 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
9824 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309825 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9826 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009827 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
9828 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309829 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9830 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009831 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
9832 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309833 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9834 msm_routing_put_voice_mixer),
9835};
9836
9837static const struct snd_kcontrol_new quat_mi2s_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009838 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
9839 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309840 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9841 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009842 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
9843 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309844 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
9845 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009846 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
9847 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309848 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9849 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009850 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
9851 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309852 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9853 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009854 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
9855 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309856 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9857 msm_routing_put_voice_mixer),
9858};
9859
9860static const struct snd_kcontrol_new quin_mi2s_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009861 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
9862 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309863 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9864 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009865 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
9866 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309867 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
9868 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009869 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
9870 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309871 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9872 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009873 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
9874 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309875 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9876 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009877 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
9878 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309879 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9880 msm_routing_put_voice_mixer),
9881};
9882
9883static const struct snd_kcontrol_new afe_pcm_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009884 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
9885 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309886 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9887 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009888 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
9889 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309890 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
9891 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009892 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
9893 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309894 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9895 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009896 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
9897 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309898 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9899 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009900 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
9901 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309902 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9903 msm_routing_put_voice_mixer),
9904};
9905
9906static const struct snd_kcontrol_new aux_pcm_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009907 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
9908 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309909 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9910 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009911 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
9912 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309913 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
9914 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009915 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
9916 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309917 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9918 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009919 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
9920 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309921 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9922 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009923 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
9924 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309925 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9926 msm_routing_put_voice_mixer),
9927};
9928
9929static const struct snd_kcontrol_new sec_aux_pcm_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009930 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
9931MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309932 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9933 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009934 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
9935MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309936 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
9937 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009938 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
9939MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309940 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9941 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009942 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
9943MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309944 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9945 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009946 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
9947MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309948 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9949 msm_routing_put_voice_mixer),
9950};
9951
9952static const struct snd_kcontrol_new tert_aux_pcm_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009953 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
9954MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309955 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9956 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009957 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
9958MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309959 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
9960 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009961 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
9962MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309963 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9964 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009965 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
9966MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309967 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9968 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009969 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
9970MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309971 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9972 msm_routing_put_voice_mixer),
9973};
9974
9975static const struct snd_kcontrol_new quat_aux_pcm_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009976 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
9977MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309978 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9979 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009980 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
9981MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309982 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
9983 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009984 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
9985MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309986 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9987 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009988 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
9989MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309990 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9991 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +08009992 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
9993MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309994 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9995 msm_routing_put_voice_mixer),
9996};
9997
Rohit Kumara5077932017-09-10 22:05:05 +05309998static const struct snd_kcontrol_new quin_aux_pcm_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +08009999 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
10000MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053010001 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
10002 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010003 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
10004MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053010005 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
10006 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010007 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
10008MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053010009 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
10010 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010011 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
10012MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053010013 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
10014 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010015 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
10016MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053010017 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
10018 msm_routing_put_voice_mixer),
10019};
10020
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010021static const struct snd_kcontrol_new hdmi_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010022 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
10023 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010024 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
10025 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010026 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
10027 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010028 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
10029 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010030 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
10031 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010032 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
10033 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010034 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
10035 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010036 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
10037 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010038 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
10039 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010040 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
10041 msm_routing_put_voice_mixer),
10042};
10043
10044static const struct snd_kcontrol_new slimbus_7_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010045 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
10046MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010047 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
10048 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010049 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
10050MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010051 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
10052 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010053 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
10054MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010055 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
10056 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010057 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
10058MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010059 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
10060 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010061 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
10062MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010063 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
10064 msm_routing_put_voice_mixer),
10065};
10066
10067static const struct snd_kcontrol_new slimbus_8_rx_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010068 SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
10069 MSM_BACKEND_DAI_SLIMBUS_8_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010070 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
10071 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010072 SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
10073 MSM_BACKEND_DAI_SLIMBUS_8_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010074 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
10075 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010076 SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
10077 MSM_BACKEND_DAI_SLIMBUS_8_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010078 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
10079 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010080 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
10081 MSM_BACKEND_DAI_SLIMBUS_8_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010082 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
10083 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010084 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
10085 MSM_BACKEND_DAI_SLIMBUS_8_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010086 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
10087 msm_routing_put_voice_mixer),
10088};
10089
10090static const struct snd_kcontrol_new quat_tdm_rx_2_voice_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010091 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
10092 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010093 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
10094 msm_routing_put_voice_mixer),
10095};
10096
10097static const struct snd_kcontrol_new stub_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010098 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
10099 MSM_BACKEND_DAI_EXTPROC_RX,
kunleizdf5a00a2017-11-27 15:27:36 +080010100 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
10101 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010102 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
10103 MSM_BACKEND_DAI_EXTPROC_RX,
kunleizdf5a00a2017-11-27 15:27:36 +080010104 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
10105 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010106};
10107
10108static const struct snd_kcontrol_new slimbus_1_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010109 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
10110 MSM_BACKEND_DAI_SLIMBUS_1_RX,
kunleizdf5a00a2017-11-27 15:27:36 +080010111 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
10112 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010113 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
10114 MSM_BACKEND_DAI_SLIMBUS_1_RX,
kunleizdf5a00a2017-11-27 15:27:36 +080010115 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
10116 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010117};
10118
10119static const struct snd_kcontrol_new slimbus_3_rx_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010120 SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
10121 MSM_BACKEND_DAI_SLIMBUS_3_RX,
kunleizdf5a00a2017-11-27 15:27:36 +080010122 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
10123 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010124 SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
10125 MSM_BACKEND_DAI_SLIMBUS_3_RX,
kunleizdf5a00a2017-11-27 15:27:36 +080010126 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
10127 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010128};
10129
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010130static const struct snd_kcontrol_new tx_voicemmode1_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010131 SOC_DOUBLE_EXT("PRI_TX_MMode1", SND_SOC_NOPM,
10132 MSM_BACKEND_DAI_PRI_I2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010133 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
10134 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010135 SOC_DOUBLE_EXT("MI2S_TX_MMode1", SND_SOC_NOPM,
10136 MSM_BACKEND_DAI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010137 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
10138 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010139 SOC_DOUBLE_EXT("SLIM_0_TX_MMode1", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010140 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
10141 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010142 SOC_DOUBLE_EXT("INT_BT_SCO_TX_MMode1", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010143 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
10144 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010145 SOC_DOUBLE_EXT("AFE_PCM_TX_MMode1", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010146 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
10147 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010148 SOC_DOUBLE_EXT("AUX_PCM_TX_MMode1", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010149 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
10150 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010151 SOC_DOUBLE_EXT("SEC_AUX_PCM_TX_MMode1", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010152 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
10153 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010154 SOC_DOUBLE_EXT("TERT_AUX_PCM_TX_MMode1", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010155 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
10156 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010157 SOC_DOUBLE_EXT("QUAT_AUX_PCM_TX_MMode1", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010158 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
10159 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010160 SOC_DOUBLE_EXT("QUIN_AUX_PCM_TX_MMode1", SND_SOC_NOPM,
Rohit Kumara5077932017-09-10 22:05:05 +053010161 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
10162 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010163 SOC_DOUBLE_EXT("PRI_MI2S_TX_MMode1", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010164 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
10165 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010166 SOC_DOUBLE_EXT("TERT_MI2S_TX_MMode1", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010167 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
10168 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010169 SOC_DOUBLE_EXT("INT3_MI2S_TX_MMode1", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010170 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
10171 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010172 SOC_DOUBLE_EXT("SLIM_7_TX_MMode1", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010173 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
10174 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010175 SOC_DOUBLE_EXT("SLIM_8_TX_MMode1", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010176 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
10177 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010178 SOC_DOUBLE_EXT("USB_AUDIO_TX_MMode1", SND_SOC_NOPM,
10179 MSM_BACKEND_DAI_USB_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010180 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
10181 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010182 SOC_DOUBLE_EXT("QUAT_TDM_TX_0_MMode1", SND_SOC_NOPM,
10183MSM_BACKEND_DAI_QUAT_TDM_TX_0, MSM_FRONTEND_DAI_VOICEMMODE1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010184 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
10185};
10186
10187static const struct snd_kcontrol_new tx_voicemmode2_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010188 SOC_DOUBLE_EXT("PRI_TX_MMode2", SND_SOC_NOPM,
10189 MSM_BACKEND_DAI_PRI_I2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010190 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
10191 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010192 SOC_DOUBLE_EXT("MI2S_TX_MMode2", SND_SOC_NOPM,
10193 MSM_BACKEND_DAI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010194 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
10195 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010196 SOC_DOUBLE_EXT("SLIM_0_TX_MMode2", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010197 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
10198 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010199 SOC_DOUBLE_EXT("INT_BT_SCO_TX_MMode2", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010200 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
10201 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010202 SOC_DOUBLE_EXT("AFE_PCM_TX_MMode2", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010203 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
10204 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010205 SOC_DOUBLE_EXT("AUX_PCM_TX_MMode2", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010206 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
10207 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010208 SOC_DOUBLE_EXT("SEC_AUX_PCM_TX_MMode2", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010209 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
10210 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010211 SOC_DOUBLE_EXT("TERT_AUX_PCM_TX_MMode2", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010212 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
10213 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010214 SOC_DOUBLE_EXT("QUAT_AUX_PCM_TX_MMode2", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010215 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
10216 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010217 SOC_DOUBLE_EXT("QUIN_AUX_PCM_TX_MMode2", SND_SOC_NOPM,
Rohit Kumara5077932017-09-10 22:05:05 +053010218 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
10219 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010220 SOC_DOUBLE_EXT("PRI_MI2S_TX_MMode2", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010221 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
10222 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010223 SOC_DOUBLE_EXT("TERT_MI2S_TX_MMode2", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010224 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
10225 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010226 SOC_DOUBLE_EXT("INT3_MI2S_TX_MMode2", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010227 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
10228 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010229 SOC_DOUBLE_EXT("SLIM_7_TX_MMode2", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010230 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
10231 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010232 SOC_DOUBLE_EXT("SLIM_8_TX_MMode2", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010233 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
10234 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010235 SOC_DOUBLE_EXT("USB_AUDIO_TX_MMode2", SND_SOC_NOPM,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010236 MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
10237 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
10238};
10239
10240static const struct snd_kcontrol_new tx_voip_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010241 SOC_DOUBLE_EXT("PRI_TX_Voip", SND_SOC_NOPM,
10242 MSM_BACKEND_DAI_PRI_I2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010243 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
10244 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010245 SOC_DOUBLE_EXT("MI2S_TX_Voip", SND_SOC_NOPM,
10246 MSM_BACKEND_DAI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010247 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
10248 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010249 SOC_DOUBLE_EXT("SLIM_0_TX_Voip", SND_SOC_NOPM,
10250 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010251 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
10252 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010253 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX_Voip", SND_SOC_NOPM,
10254 MSM_BACKEND_DAI_INT_BT_SCO_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010255 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
10256 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010257 SOC_DOUBLE_EXT("AFE_PCM_TX_Voip", SND_SOC_NOPM,
10258 MSM_BACKEND_DAI_AFE_PCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010259 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
10260 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010261 SOC_DOUBLE_EXT("AUX_PCM_TX_Voip", SND_SOC_NOPM,
10262 MSM_BACKEND_DAI_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010263 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
10264 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010265 SOC_DOUBLE_EXT("SEC_AUX_PCM_TX_Voip", SND_SOC_NOPM,
10266 MSM_BACKEND_DAI_SEC_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010267 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
10268 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010269 SOC_DOUBLE_EXT("TERT_AUX_PCM_TX_Voip", SND_SOC_NOPM,
10270 MSM_BACKEND_DAI_TERT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010271 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
10272 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010273 SOC_DOUBLE_EXT("QUAT_AUX_PCM_TX_Voip", SND_SOC_NOPM,
10274 MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010275 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
10276 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010277 SOC_DOUBLE_EXT("QUIN_AUX_PCM_TX_Voip", SND_SOC_NOPM,
10278 MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
Rohit Kumara5077932017-09-10 22:05:05 +053010279 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
10280 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010281 SOC_DOUBLE_EXT("PRI_MI2S_TX_Voip", SND_SOC_NOPM,
10282 MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010283 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
10284 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010285 SOC_DOUBLE_EXT("TERT_MI2S_TX_Voip", SND_SOC_NOPM,
10286 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010287 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
10288 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010289 SOC_DOUBLE_EXT("INT3_MI2S_TX_Voip", SND_SOC_NOPM,
10290 MSM_BACKEND_DAI_INT3_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010291 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
10292 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010293 SOC_DOUBLE_EXT("SLIM_7_TX_Voip", SND_SOC_NOPM,
10294 MSM_BACKEND_DAI_SLIMBUS_7_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010295 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
10296 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010297 SOC_DOUBLE_EXT("SLIM_8_TX_Voip", SND_SOC_NOPM,
10298 MSM_BACKEND_DAI_SLIMBUS_8_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010299 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
10300 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010301 SOC_DOUBLE_EXT("USB_AUDIO_TX_Voip", SND_SOC_NOPM,
10302 MSM_BACKEND_DAI_USB_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010303 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
10304 msm_routing_put_voice_mixer),
10305};
10306
10307static const struct snd_kcontrol_new tx_voice_stub_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010308 SOC_DOUBLE_EXT("STUB_TX_HL", SND_SOC_NOPM,
10309 MSM_BACKEND_DAI_EXTPROC_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010310 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10311 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010312 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
10313 MSM_BACKEND_DAI_INT_BT_SCO_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010314 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10315 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010316 SOC_DOUBLE_EXT("SLIM_1_TX", SND_SOC_NOPM,
10317 MSM_BACKEND_DAI_SLIMBUS_1_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010318 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10319 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010320 SOC_DOUBLE_EXT("STUB_1_TX_HL", SND_SOC_NOPM,
10321 MSM_BACKEND_DAI_EXTPROC_EC_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010322 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10323 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010324 SOC_DOUBLE_EXT("MI2S_TX", SND_SOC_NOPM,
10325 MSM_BACKEND_DAI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010326 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10327 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010328 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
10329 MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010330 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10331 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010332 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
10333 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010334 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10335 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010336 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
10337 MSM_BACKEND_DAI_INT3_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010338 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10339 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010340 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
10341 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010342 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10343 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010344 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
10345 MSM_BACKEND_DAI_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010346 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10347 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010348 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
10349 MSM_BACKEND_DAI_SEC_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010350 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10351 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010352 SOC_DOUBLE_EXT("TERT_AUXPCM_UL_TX", SND_SOC_NOPM,
10353 MSM_BACKEND_DAI_TERT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010354 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10355 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010356 SOC_DOUBLE_EXT("QUAT_AUXPCM_UL_TX", SND_SOC_NOPM,
10357 MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010358 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10359 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010360 SOC_DOUBLE_EXT("QUIN_AUXPCM_UL_TX", SND_SOC_NOPM,
10361 MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
Rohit Kumara5077932017-09-10 22:05:05 +053010362 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10363 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010364 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
10365 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010366 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10367 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010368 SOC_DOUBLE_EXT("SLIM_3_TX", SND_SOC_NOPM,
10369 MSM_BACKEND_DAI_SLIMBUS_3_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010370 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10371 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010372 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
10373 MSM_BACKEND_DAI_AFE_PCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010374 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10375 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010376 SOC_DOUBLE_EXT("SLIM_7_TX", SND_SOC_NOPM,
10377 MSM_BACKEND_DAI_SLIMBUS_7_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010378 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10379 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010380 SOC_DOUBLE_EXT("SLIM_8_TX", SND_SOC_NOPM,
10381 MSM_BACKEND_DAI_SLIMBUS_8_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010382 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10383 msm_routing_put_voice_stub_mixer),
10384};
10385
10386static const struct snd_kcontrol_new tx_voice2_stub_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010387 SOC_DOUBLE_EXT("STUB_TX_HL", SND_SOC_NOPM,
10388 MSM_BACKEND_DAI_EXTPROC_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010389 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10390 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010391 SOC_DOUBLE_EXT("SLIM_1_TX", SND_SOC_NOPM,
10392 MSM_BACKEND_DAI_SLIMBUS_1_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010393 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10394 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010395 SOC_DOUBLE_EXT("STUB_1_TX_HL", SND_SOC_NOPM,
10396 MSM_BACKEND_DAI_EXTPROC_EC_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010397 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10398 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010399 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
10400 MSM_BACKEND_DAI_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010401 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10402 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010403 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
10404 MSM_BACKEND_DAI_SEC_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010405 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10406 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010407 SOC_DOUBLE_EXT("TERT_AUXPCM_UL_TX", SND_SOC_NOPM,
10408 MSM_BACKEND_DAI_TERT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010409 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10410 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010411 SOC_DOUBLE_EXT("QUAT_AUXPCM_UL_TX", SND_SOC_NOPM,
10412 MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010413 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10414 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010415 SOC_DOUBLE_EXT("QUIN_AUXPCM_UL_TX", SND_SOC_NOPM,
10416 MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
Rohit Kumara5077932017-09-10 22:05:05 +053010417 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10418 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010419 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
10420 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010421 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10422 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010423 SOC_DOUBLE_EXT("SLIM_3_TX", SND_SOC_NOPM,
10424 MSM_BACKEND_DAI_SLIMBUS_3_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010425 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10426 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010427 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
10428 MSM_BACKEND_DAI_AFE_PCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010429 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10430 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010431 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
10432 MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010433 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10434 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010435 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
10436 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010437 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10438 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010439 SOC_DOUBLE_EXT("SLIM_7_TX", SND_SOC_NOPM,
10440 MSM_BACKEND_DAI_SLIMBUS_7_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010441 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10442 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010443 SOC_DOUBLE_EXT("SLIM_8_TX", SND_SOC_NOPM,
10444 MSM_BACKEND_DAI_SLIMBUS_8_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010445 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10446 msm_routing_put_voice_stub_mixer),
10447};
10448
10449static const struct snd_kcontrol_new tx_volte_stub_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010450 SOC_DOUBLE_EXT("STUB_TX_HL", SND_SOC_NOPM,
10451 MSM_BACKEND_DAI_EXTPROC_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010452 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10453 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010454 SOC_DOUBLE_EXT("SLIM_1_TX", SND_SOC_NOPM,
10455 MSM_BACKEND_DAI_SLIMBUS_1_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010456 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10457 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010458 SOC_DOUBLE_EXT("STUB_1_TX_HL", SND_SOC_NOPM,
10459 MSM_BACKEND_DAI_EXTPROC_EC_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010460 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10461 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010462 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
10463 MSM_BACKEND_DAI_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010464 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10465 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010466 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
10467 MSM_BACKEND_DAI_SEC_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010468 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10469 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010470 SOC_DOUBLE_EXT("TERT_AUXPCM_UL_TX", SND_SOC_NOPM,
10471 MSM_BACKEND_DAI_TERT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010472 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10473 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010474 SOC_DOUBLE_EXT("QUAT_AUXPCM_UL_TX", SND_SOC_NOPM,
10475 MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010476 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10477 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010478 SOC_DOUBLE_EXT("QUIN_AUXPCM_UL_TX", SND_SOC_NOPM,
10479 MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
Rohit Kumara5077932017-09-10 22:05:05 +053010480 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10481 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010482 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
10483 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010484 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10485 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010486 SOC_DOUBLE_EXT("SLIM_3_TX", SND_SOC_NOPM,
10487 MSM_BACKEND_DAI_SLIMBUS_3_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010488 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10489 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010490 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
10491 MSM_BACKEND_DAI_AFE_PCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010492 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10493 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010494 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
10495 MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010496 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10497 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010498 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
10499 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010500 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10501 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010502 SOC_DOUBLE_EXT("SLIM_7_TX", SND_SOC_NOPM,
10503 MSM_BACKEND_DAI_SLIMBUS_7_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010504 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10505 msm_routing_put_voice_stub_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010506 SOC_DOUBLE_EXT("SLIM_8_TX", SND_SOC_NOPM,
10507 MSM_BACKEND_DAI_SLIMBUS_8_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010508 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
10509 msm_routing_put_voice_stub_mixer),
10510};
10511
10512static const struct snd_kcontrol_new tx_qchat_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010513 SOC_DOUBLE_EXT("PRI_TX_QCHAT", SND_SOC_NOPM,
10514 MSM_BACKEND_DAI_PRI_I2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010515 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
10516 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010517 SOC_DOUBLE_EXT("SLIM_0_TX_QCHAT", SND_SOC_NOPM,
10518 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010519 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
10520 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010521 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX_QCHAT", SND_SOC_NOPM,
10522 MSM_BACKEND_DAI_INT_BT_SCO_TX,
10523 MSM_FRONTEND_DAI_QCHAT, 1, 0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010524 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010525 SOC_DOUBLE_EXT("AFE_PCM_TX_QCHAT", SND_SOC_NOPM,
10526 MSM_BACKEND_DAI_AFE_PCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010527 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
10528 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010529 SOC_DOUBLE_EXT("AUX_PCM_TX_QCHAT", SND_SOC_NOPM,
10530 MSM_BACKEND_DAI_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010531 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
10532 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010533 SOC_DOUBLE_EXT("SEC_AUX_PCM_TX_QCHAT", SND_SOC_NOPM,
10534 MSM_BACKEND_DAI_SEC_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010535 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
10536 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010537 SOC_DOUBLE_EXT("TERT_AUX_PCM_TX_QCHAT", SND_SOC_NOPM,
10538 MSM_BACKEND_DAI_TERT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010539 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
10540 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010541 SOC_DOUBLE_EXT("QUAT_AUX_PCM_TX_QCHAT", SND_SOC_NOPM,
10542 MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010543 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
10544 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010545 SOC_DOUBLE_EXT("QUIN_AUX_PCM_TX_QCHAT", SND_SOC_NOPM,
10546 MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
Rohit Kumara5077932017-09-10 22:05:05 +053010547 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
10548 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010549 SOC_DOUBLE_EXT("MI2S_TX_QCHAT", SND_SOC_NOPM,
10550 MSM_BACKEND_DAI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010551 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
10552 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010553 SOC_DOUBLE_EXT("PRI_MI2S_TX_QCHAT", SND_SOC_NOPM,
10554 MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010555 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
10556 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010557 SOC_DOUBLE_EXT("TERT_MI2S_TX_QCHAT", SND_SOC_NOPM,
10558 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010559 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
10560 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010561 SOC_DOUBLE_EXT("INT3_MI2S_TX_QCHAT", SND_SOC_NOPM,
10562 MSM_BACKEND_DAI_INT3_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010563 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
10564 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010565 SOC_DOUBLE_EXT("SLIM_7_TX_QCHAT", SND_SOC_NOPM,
10566 MSM_BACKEND_DAI_SLIMBUS_7_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010567 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
10568 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010569 SOC_DOUBLE_EXT("SLIM_8_TX_QCHAT", SND_SOC_NOPM,
10570 MSM_BACKEND_DAI_SLIMBUS_8_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010571 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
10572 msm_routing_put_voice_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010573 SOC_DOUBLE_EXT("USB_AUDIO_TX_QCHAT", SND_SOC_NOPM,
10574 MSM_BACKEND_DAI_USB_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010575 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
10576 msm_routing_put_voice_mixer),
10577};
10578
10579static const struct snd_kcontrol_new int0_mi2s_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010580 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
10581 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010582 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10583 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010584 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
10585 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010586 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10587 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010588 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
10589 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010590 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10591 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010592 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
10593 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010594 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10595 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010596 SOC_DOUBLE_EXT("QUIN_MI2S_TX", SND_SOC_NOPM,
10597 MSM_BACKEND_DAI_INT0_MI2S_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053010598 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10599 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010600 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
10601 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010602 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10603 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010604 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
10605 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010606 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
10607 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010608 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
10609 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010610 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
10611 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010612 SOC_DOUBLE_EXT("SLIM_7_TX", SND_SOC_NOPM,
10613 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010614 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
10615 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010616 SOC_DOUBLE_EXT("SLIM_8_TX", SND_SOC_NOPM,
10617 MSM_BACKEND_DAI_INT0_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010618 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
10619 msm_routing_put_port_mixer),
10620};
10621
10622static const struct snd_kcontrol_new int4_mi2s_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010623 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
10624 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010625 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10626 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010627 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
10628 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010629 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10630 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010631 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
10632 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010633 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10634 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010635 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
10636 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010637 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10638 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010639 SOC_DOUBLE_EXT("QUIN_MI2S_TX", SND_SOC_NOPM,
10640 MSM_BACKEND_DAI_INT4_MI2S_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053010641 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10642 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010643 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
10644 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010645 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10646 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010647 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
10648 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010649 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
10650 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010651 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
10652 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010653 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
10654 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010655 SOC_DOUBLE_EXT("SLIM_7_TX", SND_SOC_NOPM,
10656 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010657 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
10658 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010659 SOC_DOUBLE_EXT("SLIM_8_TX", SND_SOC_NOPM,
10660 MSM_BACKEND_DAI_INT4_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010661 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
10662 msm_routing_put_port_mixer),
10663};
10664
10665static const struct snd_kcontrol_new sbus_0_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010666 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
10667 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010668 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
10669 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010670 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
10671 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010672 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
10673 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010674 SOC_DOUBLE_EXT("SLIM_1_TX", SND_SOC_NOPM,
10675 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010676 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
10677 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010678 SOC_DOUBLE_EXT("SLIM_7_TX", SND_SOC_NOPM,
10679 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010680 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
10681 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010682 SOC_DOUBLE_EXT("SLIM_8_TX", SND_SOC_NOPM,
10683 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010684 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
10685 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010686 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
10687 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010688 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10689 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010690 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
10691 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010692 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10693 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010694 SOC_DOUBLE_EXT("TERT_AUXPCM_UL_TX", SND_SOC_NOPM,
10695 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010696 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10697 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010698 SOC_DOUBLE_EXT("QUAT_AUXPCM_UL_TX", SND_SOC_NOPM,
10699 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010700 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10701 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010702 SOC_DOUBLE_EXT("QUIN_AUXPCM_UL_TX", SND_SOC_NOPM,
10703 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053010704 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10705 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010706 SOC_DOUBLE_EXT("MI2S_TX", SND_SOC_NOPM,
10707 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010708 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10709 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010710 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
10711 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010712 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10713 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010714 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
10715 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010716 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10717 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010718 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
10719 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010720 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10721 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010722 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
10723 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010724 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10725 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010726 SOC_DOUBLE_EXT("QUIN_MI2S_TX", SND_SOC_NOPM,
10727 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053010728 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10729 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010730 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
10731 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010732 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
10733 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010734 SOC_DOUBLE_EXT("PRI_MI2S_RX", SND_SOC_NOPM,
10735 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010736 MSM_BACKEND_DAI_PRI_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
10737 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010738 SOC_DOUBLE_EXT("SEC_MI2S_RX", SND_SOC_NOPM,
10739 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010740 MSM_BACKEND_DAI_SECONDARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
10741 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010742 SOC_DOUBLE_EXT("TERT_MI2S_RX", SND_SOC_NOPM,
10743 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010744 MSM_BACKEND_DAI_TERTIARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
10745 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010746 SOC_DOUBLE_EXT("QUAT_MI2S_RX", SND_SOC_NOPM,
10747 MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010748 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
10749 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010750 SOC_DOUBLE_EXT("QUIN_MI2S_RX", SND_SOC_NOPM,
10751 MSM_BACKEND_DAI_SLIMBUS_0_RX,
10752MSM_BACKEND_DAI_QUINARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
Rohit Kumara5077932017-09-10 22:05:05 +053010753 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010754};
10755
10756static const struct snd_kcontrol_new aux_pcm_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010757 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
10758 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010759 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10760 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010761 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
10762 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010763 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
10764 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010765 SOC_DOUBLE_EXT("SLIM_1_TX", SND_SOC_NOPM,
10766 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010767 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
10768 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010769 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
10770 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010771 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10772 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010773 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
10774 MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010775 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0, msm_routing_get_port_mixer,
10776 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010777 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
10778 MSM_BACKEND_DAI_AUXPCM_RX,
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080010779 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10780 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010781};
10782
10783static const struct snd_kcontrol_new sec_auxpcm_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010784 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
10785 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010786 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10787 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010788 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
10789 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010790 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
10791 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010792 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
10793 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010794 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10795 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010796 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
10797 MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080010798 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10799 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010800};
10801
10802static const struct snd_kcontrol_new tert_auxpcm_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010803 SOC_DOUBLE_EXT("TERT_AUXPCM_UL_TX", SND_SOC_NOPM,
10804 MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010805 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10806 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010807 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
10808 MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010809 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
10810 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010811 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
10812 MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010813 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10814 msm_routing_put_port_mixer),
10815};
10816
10817static const struct snd_kcontrol_new quat_auxpcm_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010818 SOC_DOUBLE_EXT("QUAT_AUXPCM_UL_TX", SND_SOC_NOPM,
10819 MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010820 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10821 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010822 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
10823 MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010824 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
10825 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010826 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
10827 MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010828 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10829 msm_routing_put_port_mixer),
10830};
10831
Rohit Kumara5077932017-09-10 22:05:05 +053010832static const struct snd_kcontrol_new quin_auxpcm_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010833 SOC_DOUBLE_EXT("QUIN_AUXPCM_UL_TX", SND_SOC_NOPM,
10834 MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053010835 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10836 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010837 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
10838 MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053010839 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
10840 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010841 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
10842 MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053010843 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10844 msm_routing_put_port_mixer),
10845};
10846
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010847static const struct snd_kcontrol_new sbus_1_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010848 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
10849 MSM_BACKEND_DAI_SLIMBUS_1_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010850 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
10851 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010852 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
10853 MSM_BACKEND_DAI_SLIMBUS_1_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010854 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0, msm_routing_get_port_mixer,
10855 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010856 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
10857 MSM_BACKEND_DAI_SLIMBUS_1_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010858 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10859 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010860 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
10861 MSM_BACKEND_DAI_SLIMBUS_1_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010862 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10863 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010864 SOC_DOUBLE_EXT("TERT_AUXPCM_UL_TX", SND_SOC_NOPM,
10865 MSM_BACKEND_DAI_SLIMBUS_1_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010866 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10867 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010868 SOC_DOUBLE_EXT("QUAT_AUXPCM_UL_TX", SND_SOC_NOPM,
10869 MSM_BACKEND_DAI_SLIMBUS_1_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010870 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10871 msm_routing_put_port_mixer),
10872};
10873
10874static const struct snd_kcontrol_new sbus_3_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010875 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_RX", SND_SOC_NOPM,
10876 MSM_BACKEND_DAI_SLIMBUS_3_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010877 MSM_BACKEND_DAI_INT_BT_SCO_RX, 1, 0, msm_routing_get_port_mixer,
10878 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010879 SOC_DOUBLE_EXT("MI2S_TX", SND_SOC_NOPM,
10880 MSM_BACKEND_DAI_SLIMBUS_3_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010881 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10882 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010883 SOC_DOUBLE_EXT("AFE_PCM_RX", SND_SOC_NOPM,
10884 MSM_BACKEND_DAI_SLIMBUS_3_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010885 MSM_BACKEND_DAI_AFE_PCM_RX, 1, 0, msm_routing_get_port_mixer,
10886 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010887 SOC_DOUBLE_EXT("AUX_PCM_RX", SND_SOC_NOPM,
10888 MSM_BACKEND_DAI_SLIMBUS_3_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010889 MSM_BACKEND_DAI_AUXPCM_RX, 1, 0, msm_routing_get_port_mixer,
10890 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010891 SOC_DOUBLE_EXT("SLIM_0_RX", SND_SOC_NOPM,
10892 MSM_BACKEND_DAI_SLIMBUS_3_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010893 MSM_BACKEND_DAI_SLIMBUS_0_RX, 1, 0, msm_routing_get_port_mixer,
10894 msm_routing_put_port_mixer),
10895};
10896
10897static const struct snd_kcontrol_new sbus_6_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010898 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
10899 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010900 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
10901 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010902 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
10903 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010904 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
10905 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010906 SOC_DOUBLE_EXT("SLIM_1_TX", SND_SOC_NOPM,
10907 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010908 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
10909 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010910 SOC_DOUBLE_EXT("SLIM_7_TX", SND_SOC_NOPM,
10911 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010912 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
10913 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010914 SOC_DOUBLE_EXT("SLIM_8_TX", SND_SOC_NOPM,
10915 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010916 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
10917 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010918 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
10919 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010920 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10921 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010922 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
10923 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010924 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10925 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010926 SOC_DOUBLE_EXT("MI2S_TX", SND_SOC_NOPM,
10927 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010928 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10929 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010930 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
10931 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010932 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10933 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010934 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
10935 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010936 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10937 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010938 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
10939 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010940 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10941 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010942 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
10943 MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010944 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
10945 msm_routing_put_port_mixer),
10946};
10947
10948static const struct snd_kcontrol_new bt_sco_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010949 SOC_DOUBLE_EXT("SLIM_1_TX", SND_SOC_NOPM,
10950 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010951 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
10952 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010953 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
10954 MSM_BACKEND_DAI_INT_BT_SCO_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010955 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
10956 msm_routing_put_port_mixer),
10957};
10958
10959static const struct snd_kcontrol_new afe_pcm_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010960 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
10961 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010962 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
10963 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010964 SOC_DOUBLE_EXT("SLIM_1_TX", SND_SOC_NOPM,
10965 MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010966 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
10967 msm_routing_put_port_mixer),
10968};
10969
10970
10971static const struct snd_kcontrol_new hdmi_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010972 SOC_DOUBLE_EXT("MI2S_TX", SND_SOC_NOPM,
10973 MSM_BACKEND_DAI_HDMI_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010974 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10975 msm_routing_put_port_mixer),
10976};
10977
10978static const struct snd_kcontrol_new display_port_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010979 SOC_DOUBLE_EXT("MI2S_TX", SND_SOC_NOPM,
10980 MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010981 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10982 msm_routing_put_port_mixer),
10983};
10984
10985static const struct snd_kcontrol_new sec_i2s_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010986 SOC_DOUBLE_EXT("MI2S_TX", SND_SOC_NOPM,
10987 MSM_BACKEND_DAI_SEC_I2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010988 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10989 msm_routing_put_port_mixer),
10990};
10991
10992static const struct snd_kcontrol_new mi2s_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080010993 SOC_DOUBLE_EXT("SLIM_1_TX", SND_SOC_NOPM,
10994 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010995 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
10996 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080010997 SOC_DOUBLE_EXT("MI2S_TX", SND_SOC_NOPM,
10998 MSM_BACKEND_DAI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010999 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11000 msm_routing_put_port_mixer),
11001};
11002
11003static const struct snd_kcontrol_new primary_mi2s_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080011004 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
11005 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011006 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11007 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011008 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
11009 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011010 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11011 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011012 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
11013 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011014 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
11015 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011016 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
11017 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011018 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11019 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011020 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
11021 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011022 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
11023 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011024 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
11025 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011026 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11027 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011028 SOC_DOUBLE_EXT("QUIN_MI2S_TX", SND_SOC_NOPM,
11029 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011030 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11031 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011032 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
11033 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011034 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11035 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011036 SOC_DOUBLE_EXT("SLIM_8_TX", SND_SOC_NOPM,
11037 MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011038 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11039 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011040 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
11041 MSM_BACKEND_DAI_PRI_MI2S_RX,
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080011042 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
11043 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011044};
11045
11046static const struct snd_kcontrol_new usb_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080011047 SOC_DOUBLE_EXT("USB_AUDIO_TX", SND_SOC_NOPM,
11048 MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011049 MSM_BACKEND_DAI_USB_TX, 1, 0, msm_routing_get_port_mixer,
11050 msm_routing_put_port_mixer),
11051};
11052
11053static const struct snd_kcontrol_new quat_mi2s_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080011054 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
11055 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011056 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11057 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011058 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
11059 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011060 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11061 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011062 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
11063 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011064 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
11065 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011066 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
11067 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011068 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
11069 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011070 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
11071 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011072 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11073 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011074 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
11075 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011076 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11077 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011078 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
11079 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011080 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11081 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011082 SOC_DOUBLE_EXT("QUIN_MI2S_TX", SND_SOC_NOPM,
11083 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053011084 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11085 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011086 SOC_DOUBLE_EXT("SLIM_8_TX", SND_SOC_NOPM,
11087 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011088 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11089 msm_routing_put_port_mixer),
11090};
11091
Rohit Kumara5077932017-09-10 22:05:05 +053011092static const struct snd_kcontrol_new quin_mi2s_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080011093 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
11094 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053011095 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11096 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011097 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
11098 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053011099 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11100 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011101 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
11102 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053011103 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11104 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011105 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
11106 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053011107 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11108 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011109 SOC_DOUBLE_EXT("QUIN_MI2S_TX", SND_SOC_NOPM,
11110 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053011111 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11112 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011113 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
11114 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053011115 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11116 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011117 SOC_DOUBLE_EXT("SLIM_8_TX", SND_SOC_NOPM,
11118 MSM_BACKEND_DAI_QUINARY_MI2S_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053011119 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11120 msm_routing_put_port_mixer),
11121};
11122
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011123static const struct snd_kcontrol_new pri_tdm_rx_0_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080011124 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
11125 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011126 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11127 msm_routing_get_port_mixer,
11128 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011129 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
11130 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011131 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11132 msm_routing_get_port_mixer,
11133 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011134 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
11135 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011136 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
11137 msm_routing_get_port_mixer,
11138 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011139 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
11140 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011141 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11142 msm_routing_get_port_mixer,
11143 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011144 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
11145 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011146 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11147 msm_routing_get_port_mixer,
11148 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011149 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
11150 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011151 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11152 msm_routing_get_port_mixer,
11153 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011154 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
11155 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011156 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11157 msm_routing_get_port_mixer,
11158 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011159 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
11160 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011161 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11162 msm_routing_get_port_mixer,
11163 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011164 SOC_DOUBLE_EXT("PRI_TDM_TX_0", SND_SOC_NOPM,
11165 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011166 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
11167 msm_routing_get_port_mixer,
11168 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011169 SOC_DOUBLE_EXT("PRI_TDM_TX_1", SND_SOC_NOPM,
11170 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011171 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
11172 msm_routing_get_port_mixer,
11173 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011174 SOC_DOUBLE_EXT("PRI_TDM_TX_2", SND_SOC_NOPM,
11175 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011176 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
11177 msm_routing_get_port_mixer,
11178 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011179 SOC_DOUBLE_EXT("PRI_TDM_TX_3", SND_SOC_NOPM,
11180 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011181 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
11182 msm_routing_get_port_mixer,
11183 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011184 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
11185 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011186 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11187 msm_routing_get_port_mixer,
11188 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011189 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
11190 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011191 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11192 msm_routing_get_port_mixer,
11193 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011194 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
11195 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011196 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11197 msm_routing_get_port_mixer,
11198 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011199 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
11200 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011201 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11202 msm_routing_get_port_mixer,
11203 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011204 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
11205 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053011206 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11207 msm_routing_get_port_mixer,
11208 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011209 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
11210 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053011211 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11212 msm_routing_get_port_mixer,
11213 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011214 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
11215 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053011216 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11217 msm_routing_get_port_mixer,
11218 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011219 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
11220 MSM_BACKEND_DAI_PRI_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053011221 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11222 msm_routing_get_port_mixer,
11223 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011224};
11225
11226static const struct snd_kcontrol_new pri_tdm_rx_1_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080011227 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
11228 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011229 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11230 msm_routing_get_port_mixer,
11231 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011232 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
11233 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011234 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11235 msm_routing_get_port_mixer,
11236 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011237 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
11238 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011239 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
11240 msm_routing_get_port_mixer,
11241 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011242 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
11243 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011244 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11245 msm_routing_get_port_mixer,
11246 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011247 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
11248 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011249 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11250 msm_routing_get_port_mixer,
11251 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011252 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
11253 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011254 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11255 msm_routing_get_port_mixer,
11256 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011257 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
11258 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011259 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11260 msm_routing_get_port_mixer,
11261 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011262 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
11263 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011264 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11265 msm_routing_get_port_mixer,
11266 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011267 SOC_DOUBLE_EXT("PRI_TDM_TX_0", SND_SOC_NOPM,
11268 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011269 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
11270 msm_routing_get_port_mixer,
11271 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011272 SOC_DOUBLE_EXT("PRI_TDM_TX_1", SND_SOC_NOPM,
11273 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011274 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
11275 msm_routing_get_port_mixer,
11276 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011277 SOC_DOUBLE_EXT("PRI_TDM_TX_2", SND_SOC_NOPM,
11278 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011279 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
11280 msm_routing_get_port_mixer,
11281 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011282 SOC_DOUBLE_EXT("PRI_TDM_TX_3", SND_SOC_NOPM,
11283 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011284 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
11285 msm_routing_get_port_mixer,
11286 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011287 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
11288 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011289 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11290 msm_routing_get_port_mixer,
11291 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011292 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
11293 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011294 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11295 msm_routing_get_port_mixer,
11296 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011297 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
11298 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011299 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11300 msm_routing_get_port_mixer,
11301 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011302 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
11303 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011304 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11305 msm_routing_get_port_mixer,
11306 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011307 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
11308 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053011309 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11310 msm_routing_get_port_mixer,
11311 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011312 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
11313 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053011314 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11315 msm_routing_get_port_mixer,
11316 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011317 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
11318 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053011319 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11320 msm_routing_get_port_mixer,
11321 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011322 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
11323 MSM_BACKEND_DAI_PRI_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053011324 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11325 msm_routing_get_port_mixer,
11326 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011327};
11328
11329static const struct snd_kcontrol_new pri_tdm_rx_2_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080011330 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
11331 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011332 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11333 msm_routing_get_port_mixer,
11334 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011335 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
11336 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011337 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11338 msm_routing_get_port_mixer,
11339 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011340 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
11341 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011342 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
11343 msm_routing_get_port_mixer,
11344 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011345 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
11346 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011347 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11348 msm_routing_get_port_mixer,
11349 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011350 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
11351 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011352 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11353 msm_routing_get_port_mixer,
11354 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011355 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
11356 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011357 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11358 msm_routing_get_port_mixer,
11359 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011360 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
11361 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011362 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11363 msm_routing_get_port_mixer,
11364 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011365 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
11366 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011367 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11368 msm_routing_get_port_mixer,
11369 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011370 SOC_DOUBLE_EXT("PRI_TDM_TX_0", SND_SOC_NOPM,
11371 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011372 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
11373 msm_routing_get_port_mixer,
11374 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011375 SOC_DOUBLE_EXT("PRI_TDM_TX_1", SND_SOC_NOPM,
11376 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011377 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
11378 msm_routing_get_port_mixer,
11379 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011380 SOC_DOUBLE_EXT("PRI_TDM_TX_2", SND_SOC_NOPM,
11381 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011382 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
11383 msm_routing_get_port_mixer,
11384 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011385 SOC_DOUBLE_EXT("PRI_TDM_TX_3", SND_SOC_NOPM,
11386 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011387 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
11388 msm_routing_get_port_mixer,
11389 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011390 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
11391 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011392 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11393 msm_routing_get_port_mixer,
11394 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011395 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
11396 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011397 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11398 msm_routing_get_port_mixer,
11399 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011400 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
11401 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011402 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11403 msm_routing_get_port_mixer,
11404 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011405 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
11406 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011407 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11408 msm_routing_get_port_mixer,
11409 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011410 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
11411 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053011412 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11413 msm_routing_get_port_mixer,
11414 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011415 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
11416 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053011417 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11418 msm_routing_get_port_mixer,
11419 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011420 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
11421 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053011422 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11423 msm_routing_get_port_mixer,
11424 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011425 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
11426 MSM_BACKEND_DAI_PRI_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053011427 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11428 msm_routing_get_port_mixer,
11429 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011430};
11431
11432static const struct snd_kcontrol_new pri_tdm_rx_3_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080011433 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
11434 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011435 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11436 msm_routing_get_port_mixer,
11437 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011438 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
11439 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011440 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11441 msm_routing_get_port_mixer,
11442 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011443 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
11444 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011445 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
11446 msm_routing_get_port_mixer,
11447 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011448 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
11449 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011450 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11451 msm_routing_get_port_mixer,
11452 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011453 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
11454 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011455 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11456 msm_routing_get_port_mixer,
11457 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011458 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
11459 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011460 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11461 msm_routing_get_port_mixer,
11462 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011463 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
11464 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011465 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11466 msm_routing_get_port_mixer,
11467 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011468 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
11469 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011470 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11471 msm_routing_get_port_mixer,
11472 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011473 SOC_DOUBLE_EXT("PRI_TDM_TX_0", SND_SOC_NOPM,
11474 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011475 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
11476 msm_routing_get_port_mixer,
11477 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011478 SOC_DOUBLE_EXT("PRI_TDM_TX_1", SND_SOC_NOPM,
11479 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011480 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
11481 msm_routing_get_port_mixer,
11482 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011483 SOC_DOUBLE_EXT("PRI_TDM_TX_2", SND_SOC_NOPM,
11484 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011485 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
11486 msm_routing_get_port_mixer,
11487 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011488 SOC_DOUBLE_EXT("PRI_TDM_TX_3", SND_SOC_NOPM,
11489 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011490 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
11491 msm_routing_get_port_mixer,
11492 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011493 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
11494 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011495 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11496 msm_routing_get_port_mixer,
11497 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011498 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
11499 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011500 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11501 msm_routing_get_port_mixer,
11502 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011503 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
11504 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011505 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11506 msm_routing_get_port_mixer,
11507 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011508 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
11509 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011510 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11511 msm_routing_get_port_mixer,
11512 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011513 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
11514 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053011515 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11516 msm_routing_get_port_mixer,
11517 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011518 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
11519 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053011520 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11521 msm_routing_get_port_mixer,
11522 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011523 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
11524 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053011525 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11526 msm_routing_get_port_mixer,
11527 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011528 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
11529 MSM_BACKEND_DAI_PRI_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053011530 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11531 msm_routing_get_port_mixer,
11532 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011533};
11534
11535static const struct snd_kcontrol_new sec_tdm_rx_0_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080011536 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
11537 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011538 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11539 msm_routing_get_port_mixer,
11540 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011541 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
11542 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011543 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11544 msm_routing_get_port_mixer,
11545 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011546 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
11547 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011548 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
11549 msm_routing_get_port_mixer,
11550 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011551 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
11552 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011553 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11554 msm_routing_get_port_mixer,
11555 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011556 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
11557 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011558 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11559 msm_routing_get_port_mixer,
11560 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011561 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
11562 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011563 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11564 msm_routing_get_port_mixer,
11565 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011566 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
11567 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011568 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11569 msm_routing_get_port_mixer,
11570 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011571 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
11572 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011573 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11574 msm_routing_get_port_mixer,
11575 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011576 SOC_DOUBLE_EXT("SEC_TDM_TX_0", SND_SOC_NOPM,
11577 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011578 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
11579 msm_routing_get_port_mixer,
11580 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011581 SOC_DOUBLE_EXT("SEC_TDM_TX_1", SND_SOC_NOPM,
11582 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011583 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
11584 msm_routing_get_port_mixer,
11585 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011586 SOC_DOUBLE_EXT("SEC_TDM_TX_2", SND_SOC_NOPM,
11587 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011588 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
11589 msm_routing_get_port_mixer,
11590 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011591 SOC_DOUBLE_EXT("SEC_TDM_TX_3", SND_SOC_NOPM,
11592 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011593 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
11594 msm_routing_get_port_mixer,
11595 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011596 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
11597 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011598 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11599 msm_routing_get_port_mixer,
11600 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011601 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
11602 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011603 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11604 msm_routing_get_port_mixer,
11605 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011606 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
11607 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011608 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11609 msm_routing_get_port_mixer,
11610 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011611 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
11612 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011613 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11614 msm_routing_get_port_mixer,
11615 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011616 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
11617 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053011618 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11619 msm_routing_get_port_mixer,
11620 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011621 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
11622 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053011623 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11624 msm_routing_get_port_mixer,
11625 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011626 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
11627 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053011628 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11629 msm_routing_get_port_mixer,
11630 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011631 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
11632 MSM_BACKEND_DAI_SEC_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053011633 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11634 msm_routing_get_port_mixer,
11635 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011636};
11637
11638static const struct snd_kcontrol_new sec_tdm_rx_1_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080011639 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
11640 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011641 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11642 msm_routing_get_port_mixer,
11643 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011644 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
11645 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011646 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11647 msm_routing_get_port_mixer,
11648 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011649 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
11650 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011651 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
11652 msm_routing_get_port_mixer,
11653 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011654 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
11655 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011656 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11657 msm_routing_get_port_mixer,
11658 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011659 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
11660 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011661 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11662 msm_routing_get_port_mixer,
11663 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011664 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
11665 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011666 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11667 msm_routing_get_port_mixer,
11668 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011669 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
11670 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011671 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11672 msm_routing_get_port_mixer,
11673 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011674 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
11675 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011676 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11677 msm_routing_get_port_mixer,
11678 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011679 SOC_DOUBLE_EXT("SEC_TDM_TX_0", SND_SOC_NOPM,
11680 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011681 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
11682 msm_routing_get_port_mixer,
11683 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011684 SOC_DOUBLE_EXT("SEC_TDM_TX_1", SND_SOC_NOPM,
11685 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011686 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
11687 msm_routing_get_port_mixer,
11688 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011689 SOC_DOUBLE_EXT("SEC_TDM_TX_2", SND_SOC_NOPM,
11690 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011691 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
11692 msm_routing_get_port_mixer,
11693 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011694 SOC_DOUBLE_EXT("SEC_TDM_TX_3", SND_SOC_NOPM,
11695 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011696 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
11697 msm_routing_get_port_mixer,
11698 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011699 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
11700 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011701 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11702 msm_routing_get_port_mixer,
11703 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011704 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
11705 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011706 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11707 msm_routing_get_port_mixer,
11708 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011709 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
11710 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011711 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11712 msm_routing_get_port_mixer,
11713 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011714 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
11715 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011716 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11717 msm_routing_get_port_mixer,
11718 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011719 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
11720 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053011721 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11722 msm_routing_get_port_mixer,
11723 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011724 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
11725 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053011726 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11727 msm_routing_get_port_mixer,
11728 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011729 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
11730 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053011731 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11732 msm_routing_get_port_mixer,
11733 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011734 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
11735 MSM_BACKEND_DAI_SEC_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053011736 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11737 msm_routing_get_port_mixer,
11738 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011739};
11740
11741static const struct snd_kcontrol_new sec_tdm_rx_2_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080011742 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
11743 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011744 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11745 msm_routing_get_port_mixer,
11746 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011747 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
11748 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011749 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11750 msm_routing_get_port_mixer,
11751 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011752 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
11753 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011754 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
11755 msm_routing_get_port_mixer,
11756 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011757 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
11758 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011759 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11760 msm_routing_get_port_mixer,
11761 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011762 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
11763 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011764 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11765 msm_routing_get_port_mixer,
11766 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011767 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
11768 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011769 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11770 msm_routing_get_port_mixer,
11771 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011772 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
11773 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011774 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11775 msm_routing_get_port_mixer,
11776 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011777 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
11778 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011779 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11780 msm_routing_get_port_mixer,
11781 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011782 SOC_DOUBLE_EXT("SEC_TDM_TX_0", SND_SOC_NOPM,
11783 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011784 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
11785 msm_routing_get_port_mixer,
11786 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011787 SOC_DOUBLE_EXT("SEC_TDM_TX_1", SND_SOC_NOPM,
11788 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011789 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
11790 msm_routing_get_port_mixer,
11791 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011792 SOC_DOUBLE_EXT("SEC_TDM_TX_2", SND_SOC_NOPM,
11793 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011794 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
11795 msm_routing_get_port_mixer,
11796 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011797 SOC_DOUBLE_EXT("SEC_TDM_TX_3", SND_SOC_NOPM,
11798 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011799 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
11800 msm_routing_get_port_mixer,
11801 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011802 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
11803 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011804 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11805 msm_routing_get_port_mixer,
11806 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011807 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
11808 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011809 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11810 msm_routing_get_port_mixer,
11811 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011812 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
11813 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011814 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11815 msm_routing_get_port_mixer,
11816 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011817 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
11818 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011819 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11820 msm_routing_get_port_mixer,
11821 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011822 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
11823 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053011824 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11825 msm_routing_get_port_mixer,
11826 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011827 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
11828 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053011829 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11830 msm_routing_get_port_mixer,
11831 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011832 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
11833 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053011834 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11835 msm_routing_get_port_mixer,
11836 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011837 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
11838 MSM_BACKEND_DAI_SEC_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053011839 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11840 msm_routing_get_port_mixer,
11841 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011842};
11843
11844static const struct snd_kcontrol_new sec_tdm_rx_3_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080011845 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
11846 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011847 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11848 msm_routing_get_port_mixer,
11849 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011850 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
11851 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011852 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11853 msm_routing_get_port_mixer,
11854 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011855 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
11856 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011857 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
11858 msm_routing_get_port_mixer,
11859 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011860 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
11861 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011862 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11863 msm_routing_get_port_mixer,
11864 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011865 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
11866 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011867 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11868 msm_routing_get_port_mixer,
11869 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011870 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
11871 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011872 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11873 msm_routing_get_port_mixer,
11874 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011875 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
11876 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011877 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11878 msm_routing_get_port_mixer,
11879 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011880 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
11881 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011882 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11883 msm_routing_get_port_mixer,
11884 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011885 SOC_DOUBLE_EXT("SEC_TDM_TX_0", SND_SOC_NOPM,
11886 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011887 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
11888 msm_routing_get_port_mixer,
11889 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011890 SOC_DOUBLE_EXT("SEC_TDM_TX_1", SND_SOC_NOPM,
11891 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011892 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
11893 msm_routing_get_port_mixer,
11894 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011895 SOC_DOUBLE_EXT("SEC_TDM_TX_2", SND_SOC_NOPM,
11896 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011897 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
11898 msm_routing_get_port_mixer,
11899 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011900 SOC_DOUBLE_EXT("SEC_TDM_TX_3", SND_SOC_NOPM,
11901 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011902 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
11903 msm_routing_get_port_mixer,
11904 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011905 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
11906 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011907 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11908 msm_routing_get_port_mixer,
11909 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011910 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
11911 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011912 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11913 msm_routing_get_port_mixer,
11914 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011915 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
11916 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011917 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11918 msm_routing_get_port_mixer,
11919 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011920 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
11921 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011922 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11923 msm_routing_get_port_mixer,
11924 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011925 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
11926 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053011927 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11928 msm_routing_get_port_mixer,
11929 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011930 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
11931 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053011932 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11933 msm_routing_get_port_mixer,
11934 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011935 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
11936 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053011937 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11938 msm_routing_get_port_mixer,
11939 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011940 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
11941 MSM_BACKEND_DAI_SEC_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053011942 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11943 msm_routing_get_port_mixer,
11944 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011945};
11946
11947static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080011948 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
11949 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011950 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11951 msm_routing_get_port_mixer,
11952 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011953 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
11954 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011955 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11956 msm_routing_get_port_mixer,
11957 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011958 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
11959 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011960 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
11961 msm_routing_get_port_mixer,
11962 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011963 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
11964 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011965 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11966 msm_routing_get_port_mixer,
11967 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011968 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
11969 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011970 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11971 msm_routing_get_port_mixer,
11972 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011973 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
11974 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011975 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11976 msm_routing_get_port_mixer,
11977 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011978 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
11979 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011980 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11981 msm_routing_get_port_mixer,
11982 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011983 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
11984 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011985 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11986 msm_routing_get_port_mixer,
11987 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011988 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
11989 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011990 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11991 msm_routing_get_port_mixer,
11992 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011993 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
11994 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011995 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11996 msm_routing_get_port_mixer,
11997 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080011998 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
11999 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012000 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
12001 msm_routing_get_port_mixer,
12002 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012003 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
12004 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012005 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
12006 msm_routing_get_port_mixer,
12007 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012008 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
12009 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012010 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
12011 msm_routing_get_port_mixer,
12012 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012013 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
12014 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012015 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
12016 msm_routing_get_port_mixer,
12017 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012018 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
12019 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012020 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
12021 msm_routing_get_port_mixer,
12022 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012023 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
12024 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012025 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
12026 msm_routing_get_port_mixer,
12027 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012028 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
12029 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012030 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
12031 msm_routing_get_port_mixer,
12032 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012033 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
12034 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012035 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
12036 msm_routing_get_port_mixer,
12037 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012038 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
12039 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012040 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
12041 msm_routing_get_port_mixer,
12042 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012043 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
12044 MSM_BACKEND_DAI_TERT_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012045 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
12046 msm_routing_get_port_mixer,
12047 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012048};
12049
12050static const struct snd_kcontrol_new tert_tdm_rx_1_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080012051 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
12052 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012053 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
12054 msm_routing_get_port_mixer,
12055 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012056 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
12057 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012058 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
12059 msm_routing_get_port_mixer,
12060 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012061 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
12062 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012063 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
12064 msm_routing_get_port_mixer,
12065 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012066 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
12067 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012068 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
12069 msm_routing_get_port_mixer,
12070 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012071 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
12072 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012073 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
12074 msm_routing_get_port_mixer,
12075 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012076 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
12077 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012078 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
12079 msm_routing_get_port_mixer,
12080 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012081 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
12082 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012083 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
12084 msm_routing_get_port_mixer,
12085 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012086 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
12087 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012088 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
12089 msm_routing_get_port_mixer,
12090 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012091 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
12092 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012093 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
12094 msm_routing_get_port_mixer,
12095 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012096 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
12097 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012098 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
12099 msm_routing_get_port_mixer,
12100 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012101 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
12102 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012103 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
12104 msm_routing_get_port_mixer,
12105 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012106 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
12107 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012108 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
12109 msm_routing_get_port_mixer,
12110 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012111 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
12112 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012113 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
12114 msm_routing_get_port_mixer,
12115 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012116 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
12117 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012118 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
12119 msm_routing_get_port_mixer,
12120 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012121 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
12122 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012123 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
12124 msm_routing_get_port_mixer,
12125 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012126 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
12127 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012128 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
12129 msm_routing_get_port_mixer,
12130 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012131 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
12132 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012133 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
12134 msm_routing_get_port_mixer,
12135 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012136 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
12137 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012138 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
12139 msm_routing_get_port_mixer,
12140 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012141 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
12142 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012143 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
12144 msm_routing_get_port_mixer,
12145 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012146 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
12147 MSM_BACKEND_DAI_TERT_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012148 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
12149 msm_routing_get_port_mixer,
12150 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012151};
12152
12153static const struct snd_kcontrol_new tert_tdm_rx_2_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080012154 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
12155 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012156 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
12157 msm_routing_get_port_mixer,
12158 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012159 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
12160 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012161 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
12162 msm_routing_get_port_mixer,
12163 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012164 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
12165 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012166 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
12167 msm_routing_get_port_mixer,
12168 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012169 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
12170 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012171 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
12172 msm_routing_get_port_mixer,
12173 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012174 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
12175 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012176 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
12177 msm_routing_get_port_mixer,
12178 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012179 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
12180 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012181 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
12182 msm_routing_get_port_mixer,
12183 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012184 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
12185 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012186 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
12187 msm_routing_get_port_mixer,
12188 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012189 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
12190 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012191 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
12192 msm_routing_get_port_mixer,
12193 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012194 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
12195 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012196 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
12197 msm_routing_get_port_mixer,
12198 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012199 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
12200 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012201 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
12202 msm_routing_get_port_mixer,
12203 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012204 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
12205 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012206 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
12207 msm_routing_get_port_mixer,
12208 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012209 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
12210 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012211 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
12212 msm_routing_get_port_mixer,
12213 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012214 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
12215 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012216 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
12217 msm_routing_get_port_mixer,
12218 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012219 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
12220 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012221 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
12222 msm_routing_get_port_mixer,
12223 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012224 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
12225 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012226 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
12227 msm_routing_get_port_mixer,
12228 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012229 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
12230 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012231 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
12232 msm_routing_get_port_mixer,
12233 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012234 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
12235 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053012236 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
12237 msm_routing_get_port_mixer,
12238 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012239 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
12240 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053012241 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
12242 msm_routing_get_port_mixer,
12243 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012244 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
12245 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053012246 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
12247 msm_routing_get_port_mixer,
12248 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012249 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
12250 MSM_BACKEND_DAI_TERT_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053012251 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
12252 msm_routing_get_port_mixer,
12253 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012254};
12255
12256static const struct snd_kcontrol_new tert_tdm_rx_3_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080012257 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
12258 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012259 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
12260 msm_routing_get_port_mixer,
12261 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012262 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
12263 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012264 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
12265 msm_routing_get_port_mixer,
12266 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012267 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
12268 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012269 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
12270 msm_routing_get_port_mixer,
12271 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012272 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
12273 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012274 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
12275 msm_routing_get_port_mixer,
12276 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012277 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
12278 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012279 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
12280 msm_routing_get_port_mixer,
12281 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012282 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
12283 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012284 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
12285 msm_routing_get_port_mixer,
12286 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012287 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
12288 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012289 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
12290 msm_routing_get_port_mixer,
12291 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012292 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
12293 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012294 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
12295 msm_routing_get_port_mixer,
12296 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012297 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
12298 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012299 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
12300 msm_routing_get_port_mixer,
12301 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012302 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
12303 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012304 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
12305 msm_routing_get_port_mixer,
12306 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012307 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
12308 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012309 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
12310 msm_routing_get_port_mixer,
12311 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012312 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
12313 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012314 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
12315 msm_routing_get_port_mixer,
12316 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012317 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
12318 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012319 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
12320 msm_routing_get_port_mixer,
12321 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012322 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
12323 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012324 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
12325 msm_routing_get_port_mixer,
12326 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012327 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
12328 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012329 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
12330 msm_routing_get_port_mixer,
12331 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012332 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
12333 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012334 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
12335 msm_routing_get_port_mixer,
12336 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012337 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
12338 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053012339 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
12340 msm_routing_get_port_mixer,
12341 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012342 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
12343 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053012344 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
12345 msm_routing_get_port_mixer,
12346 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012347 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
12348 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053012349 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
12350 msm_routing_get_port_mixer,
12351 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012352 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
12353 MSM_BACKEND_DAI_TERT_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053012354 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
12355 msm_routing_get_port_mixer,
12356 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012357};
12358
12359static const struct snd_kcontrol_new quat_tdm_rx_0_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080012360 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
12361 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012362 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
12363 msm_routing_get_port_mixer,
12364 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012365 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
12366 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012367 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
12368 msm_routing_get_port_mixer,
12369 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012370 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
12371 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012372 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
12373 msm_routing_get_port_mixer,
12374 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012375 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
12376 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012377 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
12378 msm_routing_get_port_mixer,
12379 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012380 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
12381 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012382 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
12383 msm_routing_get_port_mixer,
12384 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012385 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
12386 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012387 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
12388 msm_routing_get_port_mixer,
12389 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012390 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
12391 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012392 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
12393 msm_routing_get_port_mixer,
12394 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012395 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
12396 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012397 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
12398 msm_routing_get_port_mixer,
12399 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012400 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
12401 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012402 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
12403 msm_routing_get_port_mixer,
12404 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012405 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
12406 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012407 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
12408 msm_routing_get_port_mixer,
12409 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012410 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
12411 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012412 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
12413 msm_routing_get_port_mixer,
12414 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012415 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
12416 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012417 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
12418 msm_routing_get_port_mixer,
12419 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012420 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
12421 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012422 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
12423 msm_routing_get_port_mixer,
12424 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012425 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
12426 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012427 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
12428 msm_routing_get_port_mixer,
12429 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012430 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
12431 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012432 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
12433 msm_routing_get_port_mixer,
12434 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012435 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
12436 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012437 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
12438 msm_routing_get_port_mixer,
12439 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012440 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
12441 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012442 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
12443 msm_routing_get_port_mixer,
12444 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012445 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
12446 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012447 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
12448 msm_routing_get_port_mixer,
12449 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012450 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
12451 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012452 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
12453 msm_routing_get_port_mixer,
12454 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012455 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
12456 MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012457 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
12458 msm_routing_get_port_mixer,
12459 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012460};
12461
12462static const struct snd_kcontrol_new quat_tdm_rx_1_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080012463 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
12464 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012465 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
12466 msm_routing_get_port_mixer,
12467 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012468 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
12469 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012470 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
12471 msm_routing_get_port_mixer,
12472 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012473 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
12474 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012475 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
12476 msm_routing_get_port_mixer,
12477 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012478 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
12479 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012480 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
12481 msm_routing_get_port_mixer,
12482 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012483 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
12484 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012485 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
12486 msm_routing_get_port_mixer,
12487 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012488 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
12489 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012490 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
12491 msm_routing_get_port_mixer,
12492 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012493 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
12494 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012495 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
12496 msm_routing_get_port_mixer,
12497 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012498 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
12499 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012500 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
12501 msm_routing_get_port_mixer,
12502 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012503 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
12504 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012505 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
12506 msm_routing_get_port_mixer,
12507 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012508 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
12509 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012510 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
12511 msm_routing_get_port_mixer,
12512 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012513 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
12514 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012515 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
12516 msm_routing_get_port_mixer,
12517 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012518 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
12519 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012520 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
12521 msm_routing_get_port_mixer,
12522 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012523 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
12524 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012525 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
12526 msm_routing_get_port_mixer,
12527 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012528 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
12529 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012530 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
12531 msm_routing_get_port_mixer,
12532 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012533 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
12534 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012535 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
12536 msm_routing_get_port_mixer,
12537 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012538 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
12539 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012540 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
12541 msm_routing_get_port_mixer,
12542 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012543 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
12544 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012545 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
12546 msm_routing_get_port_mixer,
12547 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012548 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
12549 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012550 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
12551 msm_routing_get_port_mixer,
12552 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012553 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
12554 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012555 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
12556 msm_routing_get_port_mixer,
12557 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012558 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
12559 MSM_BACKEND_DAI_QUAT_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012560 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
12561 msm_routing_get_port_mixer,
12562 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012563};
12564
12565static const struct snd_kcontrol_new quat_tdm_rx_2_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080012566 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
12567 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012568 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
12569 msm_routing_get_port_mixer,
12570 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012571 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
12572 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012573 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
12574 msm_routing_get_port_mixer,
12575 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012576 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
12577 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012578 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
12579 msm_routing_get_port_mixer,
12580 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012581 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
12582 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012583 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
12584 msm_routing_get_port_mixer,
12585 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012586 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
12587 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012588 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
12589 msm_routing_get_port_mixer,
12590 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012591 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
12592 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012593 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
12594 msm_routing_get_port_mixer,
12595 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012596 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
12597 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012598 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
12599 msm_routing_get_port_mixer,
12600 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012601 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
12602 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012603 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
12604 msm_routing_get_port_mixer,
12605 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012606 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
12607 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012608 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
12609 msm_routing_get_port_mixer,
12610 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012611 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
12612 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012613 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
12614 msm_routing_get_port_mixer,
12615 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012616 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
12617 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012618 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
12619 msm_routing_get_port_mixer,
12620 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012621 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
12622 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012623 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
12624 msm_routing_get_port_mixer,
12625 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012626 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
12627 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012628 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
12629 msm_routing_get_port_mixer,
12630 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012631 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
12632 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012633 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
12634 msm_routing_get_port_mixer,
12635 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012636 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
12637 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012638 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
12639 msm_routing_get_port_mixer,
12640 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012641 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
12642 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012643 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
12644 msm_routing_get_port_mixer,
12645 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012646 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
12647 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053012648 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
12649 msm_routing_get_port_mixer,
12650 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012651 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
12652 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053012653 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
12654 msm_routing_get_port_mixer,
12655 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012656 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
12657 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053012658 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
12659 msm_routing_get_port_mixer,
12660 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012661 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
12662 MSM_BACKEND_DAI_QUAT_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053012663 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
12664 msm_routing_get_port_mixer,
12665 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012666};
12667
12668static const struct snd_kcontrol_new quat_tdm_rx_3_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080012669 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
12670 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012671 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
12672 msm_routing_get_port_mixer,
12673 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012674 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
12675 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012676 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
12677 msm_routing_get_port_mixer,
12678 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012679 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
12680 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012681 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
12682 msm_routing_get_port_mixer,
12683 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012684 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
12685 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012686 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
12687 msm_routing_get_port_mixer,
12688 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012689 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
12690 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012691 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
12692 msm_routing_get_port_mixer,
12693 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012694 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
12695 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012696 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
12697 msm_routing_get_port_mixer,
12698 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012699 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
12700 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012701 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
12702 msm_routing_get_port_mixer,
12703 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012704 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
12705 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012706 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
12707 msm_routing_get_port_mixer,
12708 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012709 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
12710 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012711 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
12712 msm_routing_get_port_mixer,
12713 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012714 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
12715 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012716 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
12717 msm_routing_get_port_mixer,
12718 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012719 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
12720 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012721 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
12722 msm_routing_get_port_mixer,
12723 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012724 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
12725 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012726 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
12727 msm_routing_get_port_mixer,
12728 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012729 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
12730 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012731 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
12732 msm_routing_get_port_mixer,
12733 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012734 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
12735 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012736 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
12737 msm_routing_get_port_mixer,
12738 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012739 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
12740 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012741 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
12742 msm_routing_get_port_mixer,
12743 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012744 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
12745 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012746 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
12747 msm_routing_get_port_mixer,
12748 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012749 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
12750 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053012751 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
12752 msm_routing_get_port_mixer,
12753 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012754 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
12755 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053012756 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
12757 msm_routing_get_port_mixer,
12758 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012759 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
12760 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053012761 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
12762 msm_routing_get_port_mixer,
12763 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012764 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
12765 MSM_BACKEND_DAI_QUAT_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053012766 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
12767 msm_routing_get_port_mixer,
12768 msm_routing_put_port_mixer),
12769};
12770
12771static const struct snd_kcontrol_new quin_tdm_rx_0_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080012772 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
12773 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012774 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
12775 msm_routing_get_port_mixer,
12776 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012777 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
12778 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012779 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
12780 msm_routing_get_port_mixer,
12781 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012782 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
12783 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012784 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
12785 msm_routing_get_port_mixer,
12786 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012787 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
12788 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012789 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
12790 msm_routing_get_port_mixer,
12791 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012792 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
12793 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012794 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
12795 msm_routing_get_port_mixer,
12796 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012797 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
12798 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012799 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
12800 msm_routing_get_port_mixer,
12801 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012802 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
12803 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012804 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
12805 msm_routing_get_port_mixer,
12806 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012807 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
12808 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012809 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
12810 msm_routing_get_port_mixer,
12811 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012812 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
12813 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012814 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
12815 msm_routing_get_port_mixer,
12816 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012817 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
12818 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012819 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
12820 msm_routing_get_port_mixer,
12821 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012822 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
12823 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012824 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
12825 msm_routing_get_port_mixer,
12826 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012827 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
12828 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012829 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
12830 msm_routing_get_port_mixer,
12831 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012832 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
12833 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012834 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
12835 msm_routing_get_port_mixer,
12836 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012837 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
12838 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012839 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
12840 msm_routing_get_port_mixer,
12841 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012842 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
12843 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012844 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
12845 msm_routing_get_port_mixer,
12846 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012847 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
12848 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012849 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
12850 msm_routing_get_port_mixer,
12851 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012852 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
12853 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012854 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
12855 msm_routing_get_port_mixer,
12856 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012857 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
12858 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012859 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
12860 msm_routing_get_port_mixer,
12861 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012862 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
12863 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012864 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
12865 msm_routing_get_port_mixer,
12866 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012867 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
12868 MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Rohit Kumara5077932017-09-10 22:05:05 +053012869 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
12870 msm_routing_get_port_mixer,
12871 msm_routing_put_port_mixer),
12872};
12873
12874static const struct snd_kcontrol_new quin_tdm_rx_1_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080012875 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
12876 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012877 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
12878 msm_routing_get_port_mixer,
12879 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012880 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
12881 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012882 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
12883 msm_routing_get_port_mixer,
12884 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012885 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
12886 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012887 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
12888 msm_routing_get_port_mixer,
12889 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012890 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
12891 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012892 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
12893 msm_routing_get_port_mixer,
12894 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012895 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
12896 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012897 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
12898 msm_routing_get_port_mixer,
12899 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012900 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
12901 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012902 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
12903 msm_routing_get_port_mixer,
12904 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012905 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
12906 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012907 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
12908 msm_routing_get_port_mixer,
12909 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012910 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
12911 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012912 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
12913 msm_routing_get_port_mixer,
12914 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012915 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
12916 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012917 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
12918 msm_routing_get_port_mixer,
12919 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012920 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
12921 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012922 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
12923 msm_routing_get_port_mixer,
12924 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012925 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
12926 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012927 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
12928 msm_routing_get_port_mixer,
12929 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012930 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
12931 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012932 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
12933 msm_routing_get_port_mixer,
12934 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012935 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
12936 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012937 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
12938 msm_routing_get_port_mixer,
12939 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012940 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
12941 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012942 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
12943 msm_routing_get_port_mixer,
12944 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012945 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
12946 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012947 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
12948 msm_routing_get_port_mixer,
12949 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012950 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
12951 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012952 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
12953 msm_routing_get_port_mixer,
12954 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012955 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
12956 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012957 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
12958 msm_routing_get_port_mixer,
12959 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012960 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
12961 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012962 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
12963 msm_routing_get_port_mixer,
12964 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012965 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
12966 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012967 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
12968 msm_routing_get_port_mixer,
12969 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012970 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
12971 MSM_BACKEND_DAI_QUIN_TDM_RX_1,
Rohit Kumara5077932017-09-10 22:05:05 +053012972 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
12973 msm_routing_get_port_mixer,
12974 msm_routing_put_port_mixer),
12975};
12976
12977static const struct snd_kcontrol_new quin_tdm_rx_2_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080012978 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
12979 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053012980 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
12981 msm_routing_get_port_mixer,
12982 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012983 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
12984 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053012985 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
12986 msm_routing_get_port_mixer,
12987 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012988 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
12989 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053012990 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
12991 msm_routing_get_port_mixer,
12992 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012993 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
12994 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053012995 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
12996 msm_routing_get_port_mixer,
12997 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080012998 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
12999 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053013000 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
13001 msm_routing_get_port_mixer,
13002 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013003 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
13004 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053013005 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
13006 msm_routing_get_port_mixer,
13007 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013008 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
13009 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053013010 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
13011 msm_routing_get_port_mixer,
13012 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013013 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
13014 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053013015 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
13016 msm_routing_get_port_mixer,
13017 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013018 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
13019 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053013020 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
13021 msm_routing_get_port_mixer,
13022 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013023 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
13024 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053013025 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
13026 msm_routing_get_port_mixer,
13027 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013028 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
13029 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053013030 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
13031 msm_routing_get_port_mixer,
13032 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013033 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
13034 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053013035 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
13036 msm_routing_get_port_mixer,
13037 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013038 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
13039 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053013040 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
13041 msm_routing_get_port_mixer,
13042 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013043 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
13044 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053013045 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
13046 msm_routing_get_port_mixer,
13047 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013048 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
13049 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053013050 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
13051 msm_routing_get_port_mixer,
13052 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013053 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
13054 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053013055 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
13056 msm_routing_get_port_mixer,
13057 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013058 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
13059 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053013060 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
13061 msm_routing_get_port_mixer,
13062 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013063 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
13064 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053013065 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
13066 msm_routing_get_port_mixer,
13067 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013068 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
13069 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053013070 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
13071 msm_routing_get_port_mixer,
13072 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013073 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
13074 MSM_BACKEND_DAI_QUIN_TDM_RX_2,
Rohit Kumara5077932017-09-10 22:05:05 +053013075 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
13076 msm_routing_get_port_mixer,
13077 msm_routing_put_port_mixer),
13078};
13079
13080static const struct snd_kcontrol_new quin_tdm_rx_3_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080013081 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
13082 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053013083 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
13084 msm_routing_get_port_mixer,
13085 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013086 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
13087 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053013088 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
13089 msm_routing_get_port_mixer,
13090 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013091 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
13092 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053013093 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
13094 msm_routing_get_port_mixer,
13095 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013096 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
13097 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053013098 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
13099 msm_routing_get_port_mixer,
13100 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013101 SOC_DOUBLE_EXT("INTERNAL_BT_SCO_TX", SND_SOC_NOPM,
13102 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053013103 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
13104 msm_routing_get_port_mixer,
13105 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013106 SOC_DOUBLE_EXT("AFE_PCM_TX", SND_SOC_NOPM,
13107 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053013108 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
13109 msm_routing_get_port_mixer,
13110 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013111 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
13112 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053013113 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
13114 msm_routing_get_port_mixer,
13115 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013116 SOC_DOUBLE_EXT("SEC_AUX_PCM_UL_TX", SND_SOC_NOPM,
13117 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053013118 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
13119 msm_routing_get_port_mixer,
13120 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013121 SOC_DOUBLE_EXT("TERT_TDM_TX_0", SND_SOC_NOPM,
13122 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053013123 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
13124 msm_routing_get_port_mixer,
13125 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013126 SOC_DOUBLE_EXT("TERT_TDM_TX_1", SND_SOC_NOPM,
13127 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053013128 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
13129 msm_routing_get_port_mixer,
13130 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013131 SOC_DOUBLE_EXT("TERT_TDM_TX_2", SND_SOC_NOPM,
13132 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053013133 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
13134 msm_routing_get_port_mixer,
13135 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013136 SOC_DOUBLE_EXT("TERT_TDM_TX_3", SND_SOC_NOPM,
13137 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053013138 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
13139 msm_routing_get_port_mixer,
13140 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013141 SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
13142 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053013143 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
13144 msm_routing_get_port_mixer,
13145 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013146 SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
13147 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053013148 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
13149 msm_routing_get_port_mixer,
13150 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013151 SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
13152 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053013153 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
13154 msm_routing_get_port_mixer,
13155 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013156 SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
13157 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053013158 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
13159 msm_routing_get_port_mixer,
13160 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013161 SOC_DOUBLE_EXT("QUIN_TDM_TX_0", SND_SOC_NOPM,
13162 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053013163 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
13164 msm_routing_get_port_mixer,
13165 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013166 SOC_DOUBLE_EXT("QUIN_TDM_TX_1", SND_SOC_NOPM,
13167 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053013168 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
13169 msm_routing_get_port_mixer,
13170 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013171 SOC_DOUBLE_EXT("QUIN_TDM_TX_2", SND_SOC_NOPM,
13172 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053013173 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
13174 msm_routing_get_port_mixer,
13175 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013176 SOC_DOUBLE_EXT("QUIN_TDM_TX_3", SND_SOC_NOPM,
13177 MSM_BACKEND_DAI_QUIN_TDM_RX_3,
Rohit Kumara5077932017-09-10 22:05:05 +053013178 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
13179 msm_routing_get_port_mixer,
13180 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013181};
13182
13183static const struct snd_kcontrol_new tert_mi2s_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080013184 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
13185 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013186 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
13187 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013188 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
13189 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013190 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
13191 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013192 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
13193 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013194 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
13195 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013196 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
13197 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013198 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
13199 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013200 SOC_DOUBLE_EXT("QUIN_MI2S_TX", SND_SOC_NOPM,
13201 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053013202 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
13203 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013204 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
13205 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013206 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
13207 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013208 SOC_DOUBLE_EXT("SLIM_8_TX", SND_SOC_NOPM,
13209 MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013210 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
13211 msm_routing_put_port_mixer),
13212};
13213
13214static const struct snd_kcontrol_new sec_mi2s_rx_port_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080013215 SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
13216 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013217 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
13218 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013219 SOC_DOUBLE_EXT("SEC_MI2S_TX", SND_SOC_NOPM,
13220 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013221 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
13222 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013223 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
13224 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013225 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
13226 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013227 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
13228 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013229 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
13230 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013231 SOC_DOUBLE_EXT("QUIN_MI2S_TX", SND_SOC_NOPM,
13232 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Rohit Kumara5077932017-09-10 22:05:05 +053013233 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
13234 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013235 SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM,
13236 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013237 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
13238 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013239 SOC_DOUBLE_EXT("INTERNAL_FM_TX", SND_SOC_NOPM,
13240 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013241 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
13242 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013243 SOC_DOUBLE_EXT("SLIM_8_TX", SND_SOC_NOPM,
13244 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013245 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
13246 msm_routing_put_port_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013247 SOC_DOUBLE_EXT("AUX_PCM_UL_TX", SND_SOC_NOPM,
13248 MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080013249 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
13250 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013251};
13252
13253static const struct snd_kcontrol_new lsm1_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080013254 SOC_DOUBLE_EXT("SLIMBUS_0_TX", SND_SOC_NOPM,
13255 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013256 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
13257 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013258 SOC_DOUBLE_EXT("SLIMBUS_1_TX", SND_SOC_NOPM,
13259 MSM_BACKEND_DAI_SLIMBUS_1_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013260 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
13261 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013262 SOC_DOUBLE_EXT("SLIMBUS_3_TX", SND_SOC_NOPM,
13263 MSM_BACKEND_DAI_SLIMBUS_3_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013264 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
13265 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013266 SOC_DOUBLE_EXT("SLIMBUS_4_TX", SND_SOC_NOPM,
13267 MSM_BACKEND_DAI_SLIMBUS_4_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013268 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
13269 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013270 SOC_DOUBLE_EXT("SLIMBUS_5_TX", SND_SOC_NOPM,
13271 MSM_BACKEND_DAI_SLIMBUS_5_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013272 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
13273 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013274 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
13275 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013276 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
13277 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013278 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
13279 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013280 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
13281 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013282 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
13283 MSM_BACKEND_DAI_INT3_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013284 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
13285 msm_routing_put_listen_mixer),
13286};
13287
13288static const struct snd_kcontrol_new lsm2_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080013289 SOC_DOUBLE_EXT("SLIMBUS_0_TX", SND_SOC_NOPM,
13290 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013291 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
13292 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013293 SOC_DOUBLE_EXT("SLIMBUS_1_TX",
13294 SND_SOC_NOPM,
13295 MSM_BACKEND_DAI_SLIMBUS_1_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013296 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
13297 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013298 SOC_DOUBLE_EXT("SLIMBUS_3_TX", SND_SOC_NOPM,
13299 MSM_BACKEND_DAI_SLIMBUS_3_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013300 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
13301 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013302 SOC_DOUBLE_EXT("SLIMBUS_4_TX", SND_SOC_NOPM,
13303 MSM_BACKEND_DAI_SLIMBUS_4_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013304 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
13305 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013306 SOC_DOUBLE_EXT("SLIMBUS_5_TX", SND_SOC_NOPM,
13307 MSM_BACKEND_DAI_SLIMBUS_5_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013308 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
13309 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013310 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
13311 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013312 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
13313 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013314 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
13315 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013316 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
13317 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013318 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
13319 MSM_BACKEND_DAI_INT3_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013320 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
13321 msm_routing_put_listen_mixer),
13322};
13323
13324static const struct snd_kcontrol_new lsm3_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080013325 SOC_DOUBLE_EXT("SLIMBUS_0_TX", SND_SOC_NOPM,
13326 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013327 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
13328 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013329 SOC_DOUBLE_EXT("SLIMBUS_1_TX", SND_SOC_NOPM,
13330 MSM_BACKEND_DAI_SLIMBUS_1_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013331 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
13332 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013333 SOC_DOUBLE_EXT("SLIMBUS_3_TX", SND_SOC_NOPM,
13334 MSM_BACKEND_DAI_SLIMBUS_3_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013335 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
13336 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013337 SOC_DOUBLE_EXT("SLIMBUS_4_TX", SND_SOC_NOPM,
13338 MSM_BACKEND_DAI_SLIMBUS_4_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013339 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
13340 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013341 SOC_DOUBLE_EXT("SLIMBUS_5_TX", SND_SOC_NOPM,
13342 MSM_BACKEND_DAI_SLIMBUS_5_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013343 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
13344 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013345 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
13346 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013347 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
13348 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013349 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
13350 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013351 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
13352 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013353 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
13354 MSM_BACKEND_DAI_INT3_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013355 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
13356 msm_routing_put_listen_mixer),
13357};
13358
13359static const struct snd_kcontrol_new lsm4_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080013360 SOC_DOUBLE_EXT("SLIMBUS_0_TX", SND_SOC_NOPM,
13361 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013362 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
13363 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013364 SOC_DOUBLE_EXT("SLIMBUS_1_TX", SND_SOC_NOPM,
13365 MSM_BACKEND_DAI_SLIMBUS_1_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013366 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
13367 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013368 SOC_DOUBLE_EXT("SLIMBUS_3_TX", SND_SOC_NOPM,
13369 MSM_BACKEND_DAI_SLIMBUS_3_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013370 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
13371 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013372 SOC_DOUBLE_EXT("SLIMBUS_4_TX", SND_SOC_NOPM,
13373 MSM_BACKEND_DAI_SLIMBUS_4_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013374 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
13375 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013376 SOC_DOUBLE_EXT("SLIMBUS_5_TX", SND_SOC_NOPM,
13377 MSM_BACKEND_DAI_SLIMBUS_5_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013378 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
13379 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013380 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
13381 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013382 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
13383 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013384 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
13385 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013386 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
13387 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013388 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
13389 MSM_BACKEND_DAI_INT3_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013390 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
13391 msm_routing_put_listen_mixer),
13392};
13393
13394static const struct snd_kcontrol_new lsm5_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080013395 SOC_DOUBLE_EXT("SLIMBUS_0_TX", SND_SOC_NOPM,
13396 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013397 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
13398 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013399 SOC_DOUBLE_EXT("SLIMBUS_1_TX", SND_SOC_NOPM,
13400 MSM_BACKEND_DAI_SLIMBUS_1_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013401 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
13402 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013403 SOC_DOUBLE_EXT("SLIMBUS_3_TX", SND_SOC_NOPM,
13404 MSM_BACKEND_DAI_SLIMBUS_3_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013405 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
13406 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013407 SOC_DOUBLE_EXT("SLIMBUS_4_TX", SND_SOC_NOPM,
13408 MSM_BACKEND_DAI_SLIMBUS_4_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013409 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
13410 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013411 SOC_DOUBLE_EXT("SLIMBUS_5_TX", SND_SOC_NOPM,
13412 MSM_BACKEND_DAI_SLIMBUS_5_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013413 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
13414 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013415 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
13416 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013417 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
13418 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013419 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
13420 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013421 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
13422 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013423 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
13424 MSM_BACKEND_DAI_INT3_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013425 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
13426 msm_routing_put_listen_mixer),
13427};
13428
13429static const struct snd_kcontrol_new lsm6_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080013430 SOC_DOUBLE_EXT("SLIMBUS_0_TX", SND_SOC_NOPM,
13431 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013432 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
13433 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013434 SOC_DOUBLE_EXT("SLIMBUS_1_TX", SND_SOC_NOPM,
13435 MSM_BACKEND_DAI_SLIMBUS_1_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013436 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
13437 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013438 SOC_DOUBLE_EXT("SLIMBUS_3_TX", SND_SOC_NOPM,
13439 MSM_BACKEND_DAI_SLIMBUS_3_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013440 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
13441 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013442 SOC_DOUBLE_EXT("SLIMBUS_4_TX", SND_SOC_NOPM,
13443 MSM_BACKEND_DAI_SLIMBUS_4_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013444 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
13445 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013446 SOC_DOUBLE_EXT("SLIMBUS_5_TX", SND_SOC_NOPM,
13447 MSM_BACKEND_DAI_SLIMBUS_5_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013448 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
13449 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013450 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
13451 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013452 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
13453 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013454 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
13455 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013456 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
13457 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013458 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
13459 MSM_BACKEND_DAI_INT3_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013460 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
13461 msm_routing_put_listen_mixer),
13462};
13463
13464static const struct snd_kcontrol_new lsm7_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080013465 SOC_DOUBLE_EXT("SLIMBUS_0_TX", SND_SOC_NOPM,
13466 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013467 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
13468 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013469 SOC_DOUBLE_EXT("SLIMBUS_1_TX", SND_SOC_NOPM,
13470 MSM_BACKEND_DAI_SLIMBUS_1_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013471 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
13472 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013473 SOC_DOUBLE_EXT("SLIMBUS_3_TX", SND_SOC_NOPM,
13474 MSM_BACKEND_DAI_SLIMBUS_3_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013475 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
13476 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013477 SOC_DOUBLE_EXT("SLIMBUS_4_TX", SND_SOC_NOPM,
13478 MSM_BACKEND_DAI_SLIMBUS_4_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013479 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
13480 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013481 SOC_DOUBLE_EXT("SLIMBUS_5_TX", SND_SOC_NOPM,
13482 MSM_BACKEND_DAI_SLIMBUS_5_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013483 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
13484 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013485 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
13486 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013487 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
13488 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013489 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
13490 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013491 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
13492 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013493 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
13494 MSM_BACKEND_DAI_INT3_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013495 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
13496 msm_routing_put_listen_mixer),
13497};
13498
13499static const struct snd_kcontrol_new lsm8_mixer_controls[] = {
Meng Wang05d5e9a2018-03-28 16:45:03 +080013500 SOC_DOUBLE_EXT("SLIMBUS_0_TX", SND_SOC_NOPM,
13501 MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013502 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
13503 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013504 SOC_DOUBLE_EXT("SLIMBUS_1_TX", SND_SOC_NOPM,
13505 MSM_BACKEND_DAI_SLIMBUS_1_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013506 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
13507 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013508 SOC_DOUBLE_EXT("SLIMBUS_3_TX", SND_SOC_NOPM,
13509 MSM_BACKEND_DAI_SLIMBUS_3_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013510 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
13511 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013512 SOC_DOUBLE_EXT("SLIMBUS_4_TX", SND_SOC_NOPM,
13513 MSM_BACKEND_DAI_SLIMBUS_4_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013514 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
13515 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013516 SOC_DOUBLE_EXT("SLIMBUS_5_TX", SND_SOC_NOPM,
13517 MSM_BACKEND_DAI_SLIMBUS_5_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013518 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
13519 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013520 SOC_DOUBLE_EXT("TERT_MI2S_TX", SND_SOC_NOPM,
13521 MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013522 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
13523 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013524 SOC_DOUBLE_EXT("QUAT_MI2S_TX", SND_SOC_NOPM,
13525 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013526 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
13527 msm_routing_put_listen_mixer),
Meng Wang05d5e9a2018-03-28 16:45:03 +080013528 SOC_DOUBLE_EXT("INT3_MI2S_TX", SND_SOC_NOPM,
13529 MSM_BACKEND_DAI_INT3_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013530 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
13531 msm_routing_put_listen_mixer),
13532};
13533
13534static const struct snd_kcontrol_new slim_fm_switch_mixer_controls =
13535 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
13536 0, 1, 0, msm_routing_get_switch_mixer,
13537 msm_routing_put_switch_mixer);
13538
13539static const struct snd_kcontrol_new slim1_fm_switch_mixer_controls =
13540 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
13541 0, 1, 0, msm_routing_get_switch_mixer,
13542 msm_routing_put_switch_mixer);
13543
13544static const struct snd_kcontrol_new slim3_fm_switch_mixer_controls =
13545 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
13546 0, 1, 0, msm_routing_get_switch_mixer,
13547 msm_routing_put_switch_mixer);
13548
13549static const struct snd_kcontrol_new slim4_fm_switch_mixer_controls =
13550 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
13551 0, 1, 0, msm_routing_get_switch_mixer,
13552 msm_routing_put_switch_mixer);
13553
13554static const struct snd_kcontrol_new slim6_fm_switch_mixer_controls =
13555 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
13556 0, 1, 0, msm_routing_get_switch_mixer,
13557 msm_routing_put_switch_mixer);
13558
13559static const struct snd_kcontrol_new pcm_rx_switch_mixer_controls =
13560 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
13561 0, 1, 0, msm_routing_get_fm_pcmrx_switch_mixer,
13562 msm_routing_put_fm_pcmrx_switch_mixer);
13563
13564static const struct snd_kcontrol_new int0_mi2s_rx_switch_mixer_controls =
13565 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
13566 0, 1, 0, msm_routing_get_int0_mi2s_switch_mixer,
13567 msm_routing_put_int0_mi2s_switch_mixer);
13568
13569static const struct snd_kcontrol_new int4_mi2s_rx_switch_mixer_controls =
13570 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
13571 0, 1, 0, msm_routing_get_int4_mi2s_switch_mixer,
13572 msm_routing_put_int4_mi2s_switch_mixer);
13573
13574static const struct snd_kcontrol_new pri_mi2s_rx_switch_mixer_controls =
13575 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
13576 0, 1, 0, msm_routing_get_pri_mi2s_switch_mixer,
13577 msm_routing_put_pri_mi2s_switch_mixer);
13578
13579static const struct snd_kcontrol_new sec_mi2s_rx_switch_mixer_controls =
13580 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
13581 0, 1, 0, msm_routing_get_sec_mi2s_switch_mixer,
13582 msm_routing_put_sec_mi2s_switch_mixer);
13583
13584static const struct snd_kcontrol_new tert_mi2s_rx_switch_mixer_controls =
13585 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
13586 0, 1, 0, msm_routing_get_tert_mi2s_switch_mixer,
13587 msm_routing_put_tert_mi2s_switch_mixer);
13588
13589static const struct snd_kcontrol_new quat_mi2s_rx_switch_mixer_controls =
13590 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
13591 0, 1, 0, msm_routing_get_quat_mi2s_switch_mixer,
13592 msm_routing_put_quat_mi2s_switch_mixer);
13593
Rohit Kumara5077932017-09-10 22:05:05 +053013594static const struct snd_kcontrol_new quin_mi2s_rx_switch_mixer_controls =
13595 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
13596 0, 1, 0, msm_routing_get_quin_mi2s_switch_mixer,
13597 msm_routing_put_quin_mi2s_switch_mixer);
13598
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013599static const struct snd_kcontrol_new hfp_pri_aux_switch_mixer_controls =
13600 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
13601 0, 1, 0, msm_routing_get_hfp_switch_mixer,
13602 msm_routing_put_hfp_switch_mixer);
13603
13604static const struct snd_kcontrol_new hfp_aux_switch_mixer_controls =
13605 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
13606 0, 1, 0, msm_routing_get_hfp_switch_mixer,
13607 msm_routing_put_hfp_switch_mixer);
13608
13609static const struct snd_kcontrol_new hfp_int_switch_mixer_controls =
13610 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
13611 0, 1, 0, msm_routing_get_hfp_switch_mixer,
13612 msm_routing_put_hfp_switch_mixer);
13613
13614static const struct snd_kcontrol_new hfp_slim7_switch_mixer_controls =
13615 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
13616 0, 1, 0, msm_routing_get_hfp_switch_mixer,
13617 msm_routing_put_hfp_switch_mixer);
13618
13619static const struct snd_kcontrol_new usb_switch_mixer_controls =
13620 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
13621 0, 1, 0, msm_routing_get_usb_switch_mixer,
13622 msm_routing_put_usb_switch_mixer);
13623
13624static const struct soc_enum lsm_port_enum =
13625 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_port_text), lsm_port_text);
13626
13627static const char * const lsm_func_text[] = {
13628 "None", "AUDIO", "BEACON", "ULTRASOUND", "SWAUDIO",
13629};
13630static const struct soc_enum lsm_func_enum =
13631 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_func_text), lsm_func_text);
13632
13633static const struct snd_kcontrol_new lsm_controls[] = {
13634 /* kcontrol of lsm_function */
13635 SOC_ENUM_EXT(SLIMBUS_0_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
13636 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
13637 SOC_ENUM_EXT(SLIMBUS_1_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
13638 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
13639 SOC_ENUM_EXT(SLIMBUS_2_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
13640 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
13641 SOC_ENUM_EXT(SLIMBUS_3_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
13642 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
13643 SOC_ENUM_EXT(SLIMBUS_4_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
13644 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
13645 SOC_ENUM_EXT(SLIMBUS_5_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
13646 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
13647 SOC_ENUM_EXT(TERT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
13648 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
13649 SOC_ENUM_EXT(QUAT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
13650 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
13651 SOC_ENUM_EXT(INT3_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
13652 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
13653 /* kcontrol of lsm_port */
13654 SOC_ENUM_EXT("LSM1 Port", lsm_port_enum,
13655 msm_routing_lsm_port_get,
13656 msm_routing_lsm_port_put),
13657 SOC_ENUM_EXT("LSM2 Port", lsm_port_enum,
13658 msm_routing_lsm_port_get,
13659 msm_routing_lsm_port_put),
13660 SOC_ENUM_EXT("LSM3 Port", lsm_port_enum,
13661 msm_routing_lsm_port_get,
13662 msm_routing_lsm_port_put),
13663 SOC_ENUM_EXT("LSM4 Port", lsm_port_enum,
13664 msm_routing_lsm_port_get,
13665 msm_routing_lsm_port_put),
13666 SOC_ENUM_EXT("LSM5 Port", lsm_port_enum,
13667 msm_routing_lsm_port_get,
13668 msm_routing_lsm_port_put),
13669 SOC_ENUM_EXT("LSM6 Port", lsm_port_enum,
13670 msm_routing_lsm_port_get,
13671 msm_routing_lsm_port_put),
13672 SOC_ENUM_EXT("LSM7 Port", lsm_port_enum,
13673 msm_routing_lsm_port_get,
13674 msm_routing_lsm_port_put),
13675 SOC_ENUM_EXT("LSM8 Port", lsm_port_enum,
13676 msm_routing_lsm_port_get,
13677 msm_routing_lsm_port_put),
13678};
13679
13680static const char * const aanc_slim_0_rx_text[] = {
13681 "ZERO", "SLIMBUS_0_TX", "SLIMBUS_1_TX", "SLIMBUS_2_TX", "SLIMBUS_3_TX",
13682 "SLIMBUS_4_TX", "SLIMBUS_5_TX", "SLIMBUS_6_TX"
13683};
13684
13685static const struct soc_enum aanc_slim_0_rx_enum =
13686 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(aanc_slim_0_rx_text),
13687 aanc_slim_0_rx_text);
13688
13689static const struct snd_kcontrol_new aanc_slim_0_rx_mux[] = {
13690 SOC_ENUM_EXT("AANC_SLIM_0_RX MUX", aanc_slim_0_rx_enum,
13691 msm_routing_slim_0_rx_aanc_mux_get,
13692 msm_routing_slim_0_rx_aanc_mux_put)
13693};
13694
13695static int msm_routing_get_stereo_to_custom_stereo_control(
13696 struct snd_kcontrol *kcontrol,
13697 struct snd_ctl_elem_value *ucontrol)
13698{
13699 ucontrol->value.integer.value[0] = is_custom_stereo_on;
13700 return 0;
13701}
13702
13703static int msm_routing_put_stereo_to_custom_stereo_control(
13704 struct snd_kcontrol *kcontrol,
13705 struct snd_ctl_elem_value *ucontrol)
13706{
13707 int flag = 0, i = 0, rc = 0, idx = 0;
13708 int be_index = 0, port_id, topo_id;
13709 unsigned int session_id = 0;
13710 uint16_t op_FL_ip_FL_weight = 0;
13711 uint16_t op_FL_ip_FR_weight = 0;
13712 uint16_t op_FR_ip_FL_weight = 0;
13713 uint16_t op_FR_ip_FR_weight = 0;
13714
13715 flag = ucontrol->value.integer.value[0];
13716 pr_debug("%s E flag %d\n", __func__, flag);
13717
13718 if ((is_custom_stereo_on && flag) || (!is_custom_stereo_on && !flag)) {
13719 pr_err("%s: is_custom_stereo_on %d, flag %d\n",
13720 __func__, is_custom_stereo_on, flag);
13721 return 0;
13722 }
13723 is_custom_stereo_on = flag ? true : false;
13724 pr_debug("%s:is_custom_stereo_on %d\n", __func__, is_custom_stereo_on);
13725 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
13726 port_id = msm_bedais[be_index].port_id;
13727 if (!msm_bedais[be_index].active)
13728 continue;
13729 if ((port_id != SLIMBUS_0_RX) &&
13730 (port_id != RT_PROXY_PORT_001_RX) &&
13731 (port_id != AFE_PORT_ID_PRIMARY_MI2S_RX) &&
13732 (port_id != AFE_PORT_ID_INT4_MI2S_RX))
13733 continue;
13734
13735 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
13736 MSM_FRONTEND_DAI_MM_SIZE) {
13737 if (fe_dai_map[i][SESSION_TYPE_RX].perf_mode !=
13738 LEGACY_PCM_MODE)
13739 goto skip_send_custom_stereo;
13740 session_id =
13741 fe_dai_map[i][SESSION_TYPE_RX].strm_id;
13742 if (is_custom_stereo_on) {
13743 op_FL_ip_FL_weight =
13744 Q14_GAIN_ZERO_POINT_FIVE;
13745 op_FL_ip_FR_weight =
13746 Q14_GAIN_ZERO_POINT_FIVE;
13747 op_FR_ip_FL_weight =
13748 Q14_GAIN_ZERO_POINT_FIVE;
13749 op_FR_ip_FR_weight =
13750 Q14_GAIN_ZERO_POINT_FIVE;
13751 } else {
13752 op_FL_ip_FL_weight = Q14_GAIN_UNITY;
13753 op_FL_ip_FR_weight = 0;
13754 op_FR_ip_FL_weight = 0;
13755 op_FR_ip_FR_weight = Q14_GAIN_UNITY;
13756 }
13757 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
13758 unsigned long copp =
13759 session_copp_map[i]
13760 [SESSION_TYPE_RX][be_index];
13761 if (!test_bit(idx, &copp))
13762 goto skip_send_custom_stereo;
13763 topo_id = adm_get_topology_for_port_copp_idx(
13764 msm_bedais[be_index].port_id, idx);
13765 if (topo_id < 0)
13766 pr_debug("%s:Err:custom stereo topo %d",
13767 __func__, topo_id);
13768 pr_debug("idx %d\n", idx);
13769 if (topo_id == DS2_ADM_COPP_TOPOLOGY_ID)
13770 rc = msm_ds2_dap_set_custom_stereo_onoff
13771 (msm_bedais[be_index].port_id,
13772 idx, is_custom_stereo_on);
13773 else if (topo_id == DOLBY_ADM_COPP_TOPOLOGY_ID)
13774 rc = dolby_dap_set_custom_stereo_onoff(
13775 msm_bedais[be_index].port_id,
13776 idx, is_custom_stereo_on);
13777 else
13778 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd
13779 (msm_bedais[be_index].port_id,
13780 idx, session_id,
13781 op_FL_ip_FL_weight,
13782 op_FL_ip_FR_weight,
13783 op_FR_ip_FL_weight,
13784 op_FR_ip_FR_weight);
13785 if (rc < 0)
13786skip_send_custom_stereo:
13787 pr_err("%s: err setting custom stereo\n",
13788 __func__);
13789 }
13790
13791 }
13792 }
13793 return 0;
13794}
13795
13796static const struct snd_kcontrol_new stereo_to_custom_stereo_controls[] = {
13797 SOC_SINGLE_EXT("Set Custom Stereo OnOff", SND_SOC_NOPM, 0,
13798 1, 0, msm_routing_get_stereo_to_custom_stereo_control,
13799 msm_routing_put_stereo_to_custom_stereo_control),
13800};
13801
13802static int msm_routing_get_app_type_cfg_control(struct snd_kcontrol *kcontrol,
13803 struct snd_ctl_elem_value *ucontrol)
13804{
13805 return 0;
13806}
13807
13808static int msm_routing_put_app_type_cfg_control(struct snd_kcontrol *kcontrol,
13809 struct snd_ctl_elem_value *ucontrol)
13810{
13811 int i = 0, j;
13812 int num_app_types = ucontrol->value.integer.value[i++];
13813
13814 pr_debug("%s\n", __func__);
13815
13816 memset(app_type_cfg, 0, MAX_APP_TYPES*
13817 sizeof(struct msm_pcm_routing_app_type_data));
13818 if (num_app_types > MAX_APP_TYPES) {
13819 pr_err("%s: number of app types exceed the max supported\n",
13820 __func__);
13821 return -EINVAL;
13822 }
13823 for (j = 0; j < num_app_types; j++) {
13824 app_type_cfg[j].app_type =
13825 ucontrol->value.integer.value[i++];
13826 app_type_cfg[j].sample_rate =
13827 ucontrol->value.integer.value[i++];
13828 app_type_cfg[j].bit_width =
13829 ucontrol->value.integer.value[i++];
13830 }
13831
13832 return 0;
13833}
13834
13835static int msm_routing_put_app_type_gain_control(struct snd_kcontrol *kcontrol,
13836 struct snd_ctl_elem_value *ucontrol)
13837{
13838 int j, fe_id, be_id, port_type;
13839 int ret = 0;
13840 unsigned long copp;
13841 struct msm_pcm_routing_bdai_data *bedai;
13842 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
13843 SESSION_TYPE_RX;
13844 int app_type = ucontrol->value.integer.value[1];
13845 int gain = (ucontrol->value.integer.value[2] +
13846 ucontrol->value.integer.value[3])/2;
13847
13848 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
13849 MSM_AFE_PORT_TYPE_TX;
13850
13851 mutex_lock(&routing_lock);
13852 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
13853 if (is_be_dai_extproc(be_id))
13854 continue;
13855
13856 bedai = &msm_bedais[be_id];
13857 if (afe_get_port_type(bedai->port_id) != port_type)
13858 continue;
13859
13860 if (!bedai->active)
13861 continue;
13862
13863 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
13864 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
13865 continue;
13866
13867 if (app_type !=
13868 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
13869 continue;
13870
13871 copp = session_copp_map[fe_id][dir][be_id];
13872 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
13873 if (!test_bit(j, &copp))
13874 continue;
13875 ret |= adm_set_volume(bedai->port_id, j, gain);
13876 }
13877 }
13878 }
13879 mutex_unlock(&routing_lock);
13880 return ret ? -EINVAL : 0;
13881}
13882
13883static const struct snd_kcontrol_new app_type_cfg_controls[] = {
13884 SOC_SINGLE_MULTI_EXT("App Type Config", SND_SOC_NOPM, 0,
13885 0xFFFFFFFF, 0, 128, msm_routing_get_app_type_cfg_control,
13886 msm_routing_put_app_type_cfg_control),
13887 SOC_SINGLE_MULTI_EXT("App Type Gain", SND_SOC_NOPM, 0,
13888 0x2000, 0, 4, NULL, msm_routing_put_app_type_gain_control)
13889};
13890
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070013891static int msm_routing_put_module_cfg_control(struct snd_kcontrol *kcontrol,
13892 struct snd_ctl_elem_value *ucontrol)
13893{
13894 int copp_idx, fe_id, be_id, port_type;
13895 int ret = 0;
13896 unsigned long copp;
13897 struct msm_pcm_routing_bdai_data *bedai;
Vignesh Kulothungan60cc0352018-01-29 16:21:22 -080013898 u8 *packed_params = NULL;
13899 struct param_hdr_v3 param_hdr;
13900 u32 packed_param_size = (sizeof(struct param_hdr_v3) +
13901 sizeof(uint32_t));
13902
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070013903 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
13904 SESSION_TYPE_RX;
13905 int app_type = ucontrol->value.integer.value[1];
13906 int module_id = ucontrol->value.integer.value[2];
13907 int instance_id = ucontrol->value.integer.value[3];
13908 int param_id = ucontrol->value.integer.value[4];
13909 int param_value = ucontrol->value.integer.value[5];
13910
13911 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
13912 MSM_AFE_PORT_TYPE_TX;
13913 pr_debug("%s app_type:%d mod_id:%d instance_id:%d param_id:%d value:%d\n",
13914 __func__, app_type, module_id,
13915 instance_id, param_id, param_value);
13916
Vignesh Kulothungan60cc0352018-01-29 16:21:22 -080013917 packed_params = kzalloc(packed_param_size, GFP_KERNEL);
13918 if (!packed_params)
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070013919 return -ENOMEM;
13920
Vignesh Kulothungan60cc0352018-01-29 16:21:22 -080013921 memset(&param_hdr, 0, sizeof(param_hdr));
13922 param_hdr.module_id = module_id;
13923 param_hdr.instance_id = instance_id;
13924 param_hdr.param_id = param_id;
13925 param_hdr.param_size = sizeof(uint32_t);
13926
13927 packed_param_size = 0;
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070013928
13929 mutex_lock(&routing_lock);
13930 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
13931 if (is_be_dai_extproc(be_id))
13932 continue;
13933
13934 bedai = &msm_bedais[be_id];
13935 if (afe_get_port_type(bedai->port_id) != port_type)
13936 continue;
13937
13938 if (!bedai->active)
13939 continue;
13940
13941 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
13942 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
13943 continue;
13944
13945 if (app_type !=
13946 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
13947 continue;
13948
13949 copp = session_copp_map[fe_id][dir][be_id];
13950 for (copp_idx = 0; copp_idx < MAX_COPPS_PER_PORT;
13951 copp_idx++) {
13952 if (!test_bit(copp_idx, &copp))
13953 continue;
13954
Vignesh Kulothungan60cc0352018-01-29 16:21:22 -080013955 ret = q6common_pack_pp_params(packed_params,
13956 &param_hdr,
13957 (u8 *) &param_value,
13958 &packed_param_size);
13959 if (ret) {
13960 pr_err("%s: Failed to pack params, error %d\n",
13961 __func__, ret);
13962 goto done;
13963 }
13964
13965 ret = adm_set_pp_params(bedai->port_id,
13966 copp_idx, NULL,
13967 packed_params,
13968 packed_param_size);
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070013969 if (ret) {
13970 pr_err("%s: Setting param failed with err=%d\n",
13971 __func__, ret);
13972 ret = -EINVAL;
13973 goto done;
13974 }
13975 }
13976 }
13977 }
13978done:
13979 mutex_unlock(&routing_lock);
Vignesh Kulothungan60cc0352018-01-29 16:21:22 -080013980 kfree(packed_params);
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070013981 return ret;
13982}
13983
13984static const struct snd_kcontrol_new module_cfg_controls[] = {
13985 SOC_SINGLE_MULTI_EXT("Audio Effect", SND_SOC_NOPM, 0,
13986 0x2000, 0, 6, NULL, msm_routing_put_module_cfg_control)
13987};
13988
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013989static int msm_routing_get_lsm_app_type_cfg_control(
13990 struct snd_kcontrol *kcontrol,
13991 struct snd_ctl_elem_value *ucontrol)
13992{
13993 return 0;
13994}
13995
13996static int msm_routing_put_lsm_app_type_cfg_control(
13997 struct snd_kcontrol *kcontrol,
13998 struct snd_ctl_elem_value *ucontrol)
13999{
14000 int i = 0, j;
14001 int num_app_types = ucontrol->value.integer.value[i++];
14002
14003 memset(lsm_app_type_cfg, 0, MAX_APP_TYPES*
14004 sizeof(struct msm_pcm_routing_app_type_data));
14005 if (num_app_types > MAX_APP_TYPES) {
14006 pr_err("%s: number of app types exceed the max supported\n",
14007 __func__);
14008 return -EINVAL;
14009 }
14010 for (j = 0; j < num_app_types; j++) {
14011 lsm_app_type_cfg[j].app_type =
14012 ucontrol->value.integer.value[i++];
14013 lsm_app_type_cfg[j].sample_rate =
14014 ucontrol->value.integer.value[i++];
14015 lsm_app_type_cfg[j].bit_width =
14016 ucontrol->value.integer.value[i++];
14017 }
14018
14019 return 0;
14020}
14021
14022static const struct snd_kcontrol_new lsm_app_type_cfg_controls[] = {
14023 SOC_SINGLE_MULTI_EXT("Listen App Type Config", SND_SOC_NOPM, 0,
14024 0xFFFFFFFF, 0, 128, msm_routing_get_lsm_app_type_cfg_control,
14025 msm_routing_put_lsm_app_type_cfg_control),
14026};
14027
14028static int msm_routing_get_use_ds1_or_ds2_control(
14029 struct snd_kcontrol *kcontrol,
14030 struct snd_ctl_elem_value *ucontrol)
14031{
14032 ucontrol->value.integer.value[0] = is_ds2_on;
14033 return 0;
14034}
14035
14036static int msm_routing_put_use_ds1_or_ds2_control(
14037 struct snd_kcontrol *kcontrol,
14038 struct snd_ctl_elem_value *ucontrol)
14039{
14040 is_ds2_on = ucontrol->value.integer.value[0];
14041 return 0;
14042}
14043
14044static const struct snd_kcontrol_new use_ds1_or_ds2_controls[] = {
14045 SOC_SINGLE_EXT("DS2 OnOff", SND_SOC_NOPM, 0,
14046 1, 0, msm_routing_get_use_ds1_or_ds2_control,
14047 msm_routing_put_use_ds1_or_ds2_control),
14048};
14049
14050int msm_routing_get_rms_value_control(struct snd_kcontrol *kcontrol,
14051 struct snd_ctl_elem_value *ucontrol) {
14052 int rc = 0;
14053 int be_idx = 0;
14054 char *param_value;
14055 int *update_param_value;
Vignesh Kulothungan60cc0352018-01-29 16:21:22 -080014056 uint32_t param_size = (RMS_PAYLOAD_LEN + 1) * sizeof(uint32_t);
14057 struct param_hdr_v3 param_hdr;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014058
Vignesh Kulothungan60cc0352018-01-29 16:21:22 -080014059 param_value = kzalloc(param_size, GFP_KERNEL);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014060 if (!param_value)
14061 return -ENOMEM;
14062
Vignesh Kulothungan60cc0352018-01-29 16:21:22 -080014063 memset(&param_hdr, 0, sizeof(param_hdr));
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014064 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++)
14065 if (msm_bedais[be_idx].port_id == SLIMBUS_0_TX)
14066 break;
14067 if ((be_idx < MSM_BACKEND_DAI_MAX) && msm_bedais[be_idx].active) {
Vignesh Kulothungan60cc0352018-01-29 16:21:22 -080014068 param_hdr.module_id = RMS_MODULEID_APPI_PASSTHRU;
14069 param_hdr.instance_id = INSTANCE_ID_0;
14070 param_hdr.param_id = RMS_PARAM_FIRST_SAMPLE;
14071 param_hdr.param_size = param_size;
14072 rc = adm_get_pp_params(SLIMBUS_0_TX, 0, ADM_CLIENT_ID_DEFAULT,
14073 NULL, &param_hdr, (u8 *) param_value);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014074 if (rc) {
14075 pr_err("%s: get parameters failed:%d\n", __func__, rc);
14076 kfree(param_value);
14077 return -EINVAL;
14078 }
14079 update_param_value = (int *)param_value;
14080 ucontrol->value.integer.value[0] = update_param_value[0];
14081
14082 pr_debug("%s: FROM DSP value[0] 0x%x\n",
14083 __func__, update_param_value[0]);
14084 }
14085 kfree(param_value);
14086 return 0;
14087}
14088
14089static int msm_voc_session_id_put(struct snd_kcontrol *kcontrol,
14090 struct snd_ctl_elem_value *ucontrol)
14091{
14092 voc_session_id = ucontrol->value.integer.value[0];
14093
14094 pr_debug("%s: voc_session_id=%u\n", __func__, voc_session_id);
14095
14096 return 0;
14097}
14098
14099static int msm_voc_session_id_get(struct snd_kcontrol *kcontrol,
14100 struct snd_ctl_elem_value *ucontrol)
14101{
14102 ucontrol->value.integer.value[0] = voc_session_id;
14103
14104 return 0;
14105}
14106
14107static struct snd_kcontrol_new msm_voc_session_controls[] = {
14108 SOC_SINGLE_MULTI_EXT("Voc VSID", SND_SOC_NOPM, 0,
14109 0xFFFFFFFF, 0, 1, msm_voc_session_id_get,
14110 msm_voc_session_id_put),
14111};
14112
14113static int msm_sound_focus_info(struct snd_kcontrol *kcontrol,
14114 struct snd_ctl_elem_info *uinfo)
14115{
14116 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
14117 uinfo->count = sizeof(struct sound_focus_param);
14118
14119 return 0;
14120}
14121
14122static int msm_voice_sound_focus_put(struct snd_kcontrol *kcontrol,
14123 struct snd_ctl_elem_value *ucontrol)
14124{
14125 int ret = 0;
14126 struct sound_focus_param soundFocusData;
14127
14128 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
14129 sizeof(struct sound_focus_param));
14130 ret = voc_set_sound_focus(soundFocusData);
14131 if (ret) {
14132 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
14133 __func__, ret);
14134
14135 ret = -EINVAL;
14136 }
14137
14138 return ret;
14139}
14140
14141static int msm_voice_sound_focus_get(struct snd_kcontrol *kcontrol,
14142 struct snd_ctl_elem_value *ucontrol)
14143{
14144 int ret = 0;
14145 struct sound_focus_param soundFocusData;
14146
14147 memset(&soundFocusData, 0, sizeof(struct sound_focus_param));
14148
14149 ret = voc_get_sound_focus(&soundFocusData);
14150 if (ret) {
14151 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
14152 __func__, ret);
14153
14154 ret = -EINVAL;
14155 goto done;
14156 }
14157 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
14158 sizeof(struct sound_focus_param));
14159
14160done:
14161 return ret;
14162}
14163
14164static int msm_source_tracking_info(struct snd_kcontrol *kcontrol,
14165 struct snd_ctl_elem_info *uinfo)
14166{
14167 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
14168 uinfo->count = sizeof(struct source_tracking_param);
14169
14170 return 0;
14171}
14172
14173static int msm_voice_source_tracking_get(struct snd_kcontrol *kcontrol,
14174 struct snd_ctl_elem_value *ucontrol)
14175{
Meng Wang92edfde2018-04-24 12:18:37 +080014176 int ret = 0;
14177 struct source_tracking_param sourceTrackingData;
14178
14179 memset(&sourceTrackingData, 0, sizeof(struct source_tracking_param));
14180
14181 ret = voc_get_source_tracking(&sourceTrackingData);
14182 if (ret) {
14183 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
14184 __func__, ret);
14185
14186 ret = -EINVAL;
14187 goto done;
14188 }
14189 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
14190 sizeof(struct source_tracking_param));
14191
14192done:
14193 return ret;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014194}
14195
14196static int msm_audio_get_copp_idx_from_port_id(int port_id, int session_type,
14197 int *copp_idx)
14198{
14199 int i, idx, be_idx;
14200 int ret = 0;
14201 unsigned long copp;
14202
14203 pr_debug("%s: Enter, port_id=%d\n", __func__, port_id);
14204
14205 ret = q6audio_validate_port(port_id);
14206 if (ret < 0) {
14207 pr_err("%s: port validation failed id 0x%x ret %d\n",
14208 __func__, port_id, ret);
14209
14210 ret = -EINVAL;
14211 goto done;
14212 }
14213
14214 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
14215 if (msm_bedais[be_idx].port_id == port_id)
14216 break;
14217 }
14218 if (be_idx >= MSM_BACKEND_DAI_MAX) {
14219 pr_err("%s: Invalid be id %d\n", __func__, be_idx);
14220
14221 ret = -EINVAL;
14222 goto done;
14223 }
14224
14225 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
14226 MSM_FRONTEND_DAI_MM_SIZE) {
14227 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
14228 copp = session_copp_map[i]
14229 [session_type][be_idx];
14230 if (test_bit(idx, &copp))
14231 break;
14232 }
14233 if (idx >= MAX_COPPS_PER_PORT)
14234 continue;
14235 else
14236 break;
14237 }
14238 if (i >= MSM_FRONTEND_DAI_MM_SIZE) {
14239 pr_err("%s: Invalid FE, exiting\n", __func__);
14240
14241 ret = -EINVAL;
14242 goto done;
14243 }
14244 *copp_idx = idx;
14245 pr_debug("%s: copp_idx=%d\n", __func__, *copp_idx);
14246
14247done:
14248 return ret;
14249}
14250
14251static int msm_audio_sound_focus_derive_port_id(struct snd_kcontrol *kcontrol,
14252 const char *prefix, int *port_id)
14253{
14254 int ret = 0;
14255
14256 pr_debug("%s: Enter, prefix:%s\n", __func__, prefix);
14257
14258 /*
14259 * Mixer control name will be like "Sound Focus Audio Tx SLIMBUS_0"
14260 * where the prefix is "Sound Focus Audio Tx ". Skip the prefix
14261 * and compare the string with the backend name to derive the port id.
14262 */
14263 if (!strcmp(kcontrol->id.name + strlen(prefix),
14264 "SLIMBUS_0")) {
14265 *port_id = SLIMBUS_0_TX;
14266 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
14267 "TERT_MI2S")) {
14268 *port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
14269 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
14270 "INT3_MI2S")) {
14271 *port_id = AFE_PORT_ID_INT3_MI2S_TX;
14272 } else {
14273 pr_err("%s: mixer ctl name=%s, could not derive valid port id\n",
14274 __func__, kcontrol->id.name);
14275
14276 ret = -EINVAL;
14277 goto done;
14278 }
14279 pr_debug("%s: mixer ctl name=%s, derived port_id=%d\n",
14280 __func__, kcontrol->id.name, *port_id);
14281
14282done:
14283 return ret;
14284}
14285
14286static int msm_audio_sound_focus_put(struct snd_kcontrol *kcontrol,
14287 struct snd_ctl_elem_value *ucontrol)
14288{
14289 int ret = 0;
14290 struct sound_focus_param soundFocusData;
14291 int port_id, copp_idx;
14292
14293 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
14294 "Sound Focus Audio Tx ", &port_id);
14295 if (ret != 0) {
14296 pr_err("%s: Error in deriving port id, err=%d\n",
14297 __func__, ret);
14298
14299 ret = -EINVAL;
14300 goto done;
14301 }
14302
14303 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
14304 &copp_idx);
14305 if (ret) {
14306 pr_err("%s: Could not get copp idx for port_id=%d\n",
14307 __func__, port_id);
14308
14309 ret = -EINVAL;
14310 goto done;
14311 }
14312
14313 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
14314 sizeof(struct sound_focus_param));
14315
14316 ret = adm_set_sound_focus(port_id, copp_idx, soundFocusData);
14317 if (ret) {
14318 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
14319 __func__, ret);
14320
14321 ret = -EINVAL;
14322 goto done;
14323 }
14324
14325done:
14326 return ret;
14327}
14328
14329static int msm_audio_sound_focus_get(struct snd_kcontrol *kcontrol,
14330 struct snd_ctl_elem_value *ucontrol)
14331{
14332 int ret = 0;
14333 struct sound_focus_param soundFocusData;
14334 int port_id, copp_idx;
14335
14336 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
14337 "Sound Focus Audio Tx ", &port_id);
14338 if (ret) {
14339 pr_err("%s: Error in deriving port id, err=%d\n",
14340 __func__, ret);
14341
14342 ret = -EINVAL;
14343 goto done;
14344 }
14345
14346 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
14347 &copp_idx);
14348 if (ret) {
14349 pr_err("%s: Could not get copp idx for port_id=%d\n",
14350 __func__, port_id);
14351
14352 ret = -EINVAL;
14353 goto done;
14354 }
14355
14356 ret = adm_get_sound_focus(port_id, copp_idx, &soundFocusData);
14357 if (ret) {
14358 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
14359 __func__, ret);
14360
14361 ret = -EINVAL;
14362 goto done;
14363 }
14364
14365 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
14366 sizeof(struct sound_focus_param));
14367
14368done:
14369 return ret;
14370}
14371
14372static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol,
14373 struct snd_ctl_elem_value *ucontrol)
14374{
14375 int ret = 0;
14376 struct source_tracking_param sourceTrackingData;
14377 int port_id, copp_idx;
14378
14379 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
14380 "Source Tracking Audio Tx ", &port_id);
14381 if (ret) {
14382 pr_err("%s: Error in deriving port id, err=%d\n",
14383 __func__, ret);
14384
14385 ret = -EINVAL;
14386 goto done;
14387 }
14388
14389 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
14390 &copp_idx);
14391 if (ret) {
14392 pr_err("%s: Could not get copp idx for port_id=%d\n",
14393 __func__, port_id);
14394
14395 ret = -EINVAL;
14396 goto done;
14397 }
14398
14399 ret = adm_get_source_tracking(port_id, copp_idx, &sourceTrackingData);
14400 if (ret) {
14401 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
14402 __func__, ret);
14403
14404 ret = -EINVAL;
14405 goto done;
14406 }
14407
14408 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
14409 sizeof(struct source_tracking_param));
14410
14411done:
14412 return ret;
14413}
14414
14415static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
14416 {
14417 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
14418 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
14419 .name = "Sound Focus Voice Tx SLIMBUS_0",
14420 .info = msm_sound_focus_info,
14421 .get = msm_voice_sound_focus_get,
14422 .put = msm_voice_sound_focus_put,
14423 },
14424 {
14425 .access = SNDRV_CTL_ELEM_ACCESS_READ,
14426 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
14427 .name = "Source Tracking Voice Tx SLIMBUS_0",
14428 .info = msm_source_tracking_info,
14429 .get = msm_voice_source_tracking_get,
14430 },
14431 {
14432 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
14433 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
14434 .name = "Sound Focus Audio Tx SLIMBUS_0",
14435 .info = msm_sound_focus_info,
14436 .get = msm_audio_sound_focus_get,
14437 .put = msm_audio_sound_focus_put,
14438 },
14439 {
14440 .access = SNDRV_CTL_ELEM_ACCESS_READ,
14441 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
14442 .name = "Source Tracking Audio Tx SLIMBUS_0",
14443 .info = msm_source_tracking_info,
14444 .get = msm_audio_source_tracking_get,
14445 },
14446 {
14447 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
14448 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
14449 .name = "Sound Focus Voice Tx TERT_MI2S",
14450 .info = msm_sound_focus_info,
14451 .get = msm_voice_sound_focus_get,
14452 .put = msm_voice_sound_focus_put,
14453 },
14454 {
14455 .access = SNDRV_CTL_ELEM_ACCESS_READ,
14456 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
14457 .name = "Source Tracking Voice Tx TERT_MI2S",
14458 .info = msm_source_tracking_info,
14459 .get = msm_voice_source_tracking_get,
14460 },
14461 {
14462 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
14463 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
14464 .name = "Sound Focus Audio Tx TERT_MI2S",
14465 .info = msm_sound_focus_info,
14466 .get = msm_audio_sound_focus_get,
14467 .put = msm_audio_sound_focus_put,
14468 },
14469 {
14470 .access = SNDRV_CTL_ELEM_ACCESS_READ,
14471 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
14472 .name = "Source Tracking Audio Tx TERT_MI2S",
14473 .info = msm_source_tracking_info,
14474 .get = msm_audio_source_tracking_get,
14475 },
14476 {
14477 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
14478 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
14479 .name = "Sound Focus Voice Tx INT3_MI2S",
14480 .info = msm_sound_focus_info,
14481 .get = msm_voice_sound_focus_get,
14482 .put = msm_voice_sound_focus_put,
14483 },
14484 {
14485 .access = SNDRV_CTL_ELEM_ACCESS_READ,
14486 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
14487 .name = "Source Tracking Voice Tx INT3_MI2S",
14488 .info = msm_source_tracking_info,
14489 .get = msm_voice_source_tracking_get,
14490 },
14491 {
14492 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
14493 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
14494 .name = "Sound Focus Audio Tx INT3_MI2S",
14495 .info = msm_sound_focus_info,
14496 .get = msm_audio_sound_focus_get,
14497 .put = msm_audio_sound_focus_put,
14498 },
14499 {
14500 .access = SNDRV_CTL_ELEM_ACCESS_READ,
14501 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
14502 .name = "Source Tracking Audio Tx INT3_MI2S",
14503 .info = msm_source_tracking_info,
14504 .get = msm_audio_source_tracking_get,
14505 },
14506};
14507
14508static int spkr_prot_put_vi_lch_port(struct snd_kcontrol *kcontrol,
14509 struct snd_ctl_elem_value *ucontrol)
14510{
14511 int ret = 0;
14512 int item;
14513 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
14514
14515 pr_debug("%s item is %d\n", __func__,
14516 ucontrol->value.enumerated.item[0]);
14517 mutex_lock(&routing_lock);
14518 item = ucontrol->value.enumerated.item[0];
14519 if (item < e->items) {
14520 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
14521 __func__, e->shift_l, e->values[item]);
14522 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
14523 e->values[item] < MSM_BACKEND_DAI_MAX)
14524 /* Enable feedback TX path */
14525 ret = afe_spk_prot_feed_back_cfg(
14526 msm_bedais[e->values[item]].port_id,
14527 msm_bedais[e->shift_l].port_id, 1, 0, 1);
14528 else {
14529 pr_debug("%s values are out of range item %d\n",
14530 __func__, e->values[item]);
14531 /* Disable feedback TX path */
14532 if (e->values[item] == MSM_BACKEND_DAI_MAX)
14533 ret = afe_spk_prot_feed_back_cfg(0, 0, 0, 0, 0);
14534 else
14535 ret = -EINVAL;
14536 }
14537 } else {
14538 pr_err("%s item value is out of range item\n", __func__);
14539 ret = -EINVAL;
14540 }
14541 mutex_unlock(&routing_lock);
14542 return ret;
14543}
14544
14545static int spkr_prot_put_vi_rch_port(struct snd_kcontrol *kcontrol,
14546 struct snd_ctl_elem_value *ucontrol)
14547{
14548 int ret = 0;
14549 int item;
14550 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
14551
14552 pr_debug("%s item is %d\n", __func__,
14553 ucontrol->value.enumerated.item[0]);
14554 mutex_lock(&routing_lock);
14555 item = ucontrol->value.enumerated.item[0];
14556 if (item < e->items) {
14557 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
14558 __func__, e->shift_l, e->values[item]);
14559 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
14560 e->values[item] < MSM_BACKEND_DAI_MAX)
14561 /* Enable feedback TX path */
14562 ret = afe_spk_prot_feed_back_cfg(
14563 msm_bedais[e->values[item]].port_id,
14564 msm_bedais[e->shift_l].port_id,
14565 1, 1, 1);
14566 else {
14567 pr_debug("%s values are out of range item %d\n",
14568 __func__, e->values[item]);
14569 /* Disable feedback TX path */
14570 if (e->values[item] == MSM_BACKEND_DAI_MAX)
14571 ret = afe_spk_prot_feed_back_cfg(0,
14572 0, 0, 0, 0);
14573 else
14574 ret = -EINVAL;
14575 }
14576 } else {
14577 pr_err("%s item value is out of range item\n", __func__);
14578 ret = -EINVAL;
14579 }
14580 mutex_unlock(&routing_lock);
14581 return ret;
14582}
14583
14584static int spkr_prot_get_vi_lch_port(struct snd_kcontrol *kcontrol,
14585 struct snd_ctl_elem_value *ucontrol)
14586{
14587 pr_debug("%s\n", __func__);
14588 return 0;
14589}
14590
14591static int spkr_prot_get_vi_rch_port(struct snd_kcontrol *kcontrol,
14592 struct snd_ctl_elem_value *ucontrol)
14593{
14594 pr_debug("%s\n", __func__);
14595 ucontrol->value.enumerated.item[0] = 0;
14596 return 0;
14597}
14598
14599static const char * const slim0_rx_vi_fb_tx_lch_mux_text[] = {
14600 "ZERO", "SLIM4_TX"
14601};
14602
14603static const char * const slim0_rx_vi_fb_tx_rch_mux_text[] = {
14604 "ZERO", "SLIM4_TX"
14605};
14606
14607static const char * const mi2s_rx_vi_fb_tx_mux_text[] = {
14608 "ZERO", "SENARY_TX"
14609};
14610
14611static const char * const int4_mi2s_rx_vi_fb_tx_mono_mux_text[] = {
14612 "ZERO", "INT5_MI2S_TX"
14613};
14614
14615static const char * const int4_mi2s_rx_vi_fb_tx_stereo_mux_text[] = {
14616 "ZERO", "INT5_MI2S_TX"
14617};
14618
14619static const int const slim0_rx_vi_fb_tx_lch_value[] = {
14620 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
14621};
14622
14623static const int const slim0_rx_vi_fb_tx_rch_value[] = {
14624 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
14625};
14626
14627static const int const mi2s_rx_vi_fb_tx_value[] = {
14628 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SENARY_MI2S_TX
14629};
14630
14631static const int const int4_mi2s_rx_vi_fb_tx_mono_ch_value[] = {
14632 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
14633};
14634
14635static const int const int4_mi2s_rx_vi_fb_tx_stereo_ch_value[] = {
14636 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
14637};
14638
14639static const struct soc_enum slim0_rx_vi_fb_lch_mux_enum =
14640 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
14641 ARRAY_SIZE(slim0_rx_vi_fb_tx_lch_mux_text),
14642 slim0_rx_vi_fb_tx_lch_mux_text, slim0_rx_vi_fb_tx_lch_value);
14643
14644static const struct soc_enum slim0_rx_vi_fb_rch_mux_enum =
14645 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
14646 ARRAY_SIZE(slim0_rx_vi_fb_tx_rch_mux_text),
14647 slim0_rx_vi_fb_tx_rch_mux_text, slim0_rx_vi_fb_tx_rch_value);
14648
14649static const struct soc_enum mi2s_rx_vi_fb_mux_enum =
14650 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_PRI_MI2S_RX, 0, 0,
14651 ARRAY_SIZE(mi2s_rx_vi_fb_tx_mux_text),
14652 mi2s_rx_vi_fb_tx_mux_text, mi2s_rx_vi_fb_tx_value);
14653
14654static const struct soc_enum int4_mi2s_rx_vi_fb_mono_ch_mux_enum =
14655 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
14656 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_mono_mux_text),
14657 int4_mi2s_rx_vi_fb_tx_mono_mux_text,
14658 int4_mi2s_rx_vi_fb_tx_mono_ch_value);
14659
14660static const struct soc_enum int4_mi2s_rx_vi_fb_stereo_ch_mux_enum =
14661 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
14662 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_stereo_mux_text),
14663 int4_mi2s_rx_vi_fb_tx_stereo_mux_text,
14664 int4_mi2s_rx_vi_fb_tx_stereo_ch_value);
14665
14666static const struct snd_kcontrol_new slim0_rx_vi_fb_lch_mux =
14667 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_LCH_MUX",
14668 slim0_rx_vi_fb_lch_mux_enum, spkr_prot_get_vi_lch_port,
14669 spkr_prot_put_vi_lch_port);
14670
14671static const struct snd_kcontrol_new slim0_rx_vi_fb_rch_mux =
14672 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_RCH_MUX",
14673 slim0_rx_vi_fb_rch_mux_enum, spkr_prot_get_vi_rch_port,
14674 spkr_prot_put_vi_rch_port);
14675
14676static const struct snd_kcontrol_new mi2s_rx_vi_fb_mux =
14677 SOC_DAPM_ENUM_EXT("PRI_MI2S_RX_VI_FB_MUX",
14678 mi2s_rx_vi_fb_mux_enum, spkr_prot_get_vi_lch_port,
14679 spkr_prot_put_vi_lch_port);
14680
14681static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_mono_ch_mux =
14682 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_MONO_CH_MUX",
14683 int4_mi2s_rx_vi_fb_mono_ch_mux_enum, spkr_prot_get_vi_lch_port,
14684 spkr_prot_put_vi_lch_port);
14685
14686static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_stereo_ch_mux =
14687 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX",
14688 int4_mi2s_rx_vi_fb_stereo_ch_mux_enum, spkr_prot_get_vi_rch_port,
14689 spkr_prot_put_vi_rch_port);
14690
14691static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
14692 /* Frontend AIF */
14693 /* Widget name equals to Front-End DAI name<Need confirmation>,
14694 * Stream name must contains substring of front-end dai name
14695 */
14696 SND_SOC_DAPM_AIF_IN("MM_DL1", "MultiMedia1 Playback", 0, 0, 0, 0),
14697 SND_SOC_DAPM_AIF_IN("MM_DL2", "MultiMedia2 Playback", 0, 0, 0, 0),
14698 SND_SOC_DAPM_AIF_IN("MM_DL3", "MultiMedia3 Playback", 0, 0, 0, 0),
14699 SND_SOC_DAPM_AIF_IN("MM_DL4", "MultiMedia4 Playback", 0, 0, 0, 0),
14700 SND_SOC_DAPM_AIF_IN("MM_DL5", "MultiMedia5 Playback", 0, 0, 0, 0),
14701 SND_SOC_DAPM_AIF_IN("MM_DL6", "MultiMedia6 Playback", 0, 0, 0, 0),
14702 SND_SOC_DAPM_AIF_IN("MM_DL7", "MultiMedia7 Playback", 0, 0, 0, 0),
14703 SND_SOC_DAPM_AIF_IN("MM_DL8", "MultiMedia8 Playback", 0, 0, 0, 0),
14704 SND_SOC_DAPM_AIF_IN("MM_DL9", "MultiMedia9 Playback", 0, 0, 0, 0),
14705 SND_SOC_DAPM_AIF_IN("MM_DL10", "MultiMedia10 Playback", 0, 0, 0, 0),
14706 SND_SOC_DAPM_AIF_IN("MM_DL11", "MultiMedia11 Playback", 0, 0, 0, 0),
14707 SND_SOC_DAPM_AIF_IN("MM_DL12", "MultiMedia12 Playback", 0, 0, 0, 0),
14708 SND_SOC_DAPM_AIF_IN("MM_DL13", "MultiMedia13 Playback", 0, 0, 0, 0),
14709 SND_SOC_DAPM_AIF_IN("MM_DL14", "MultiMedia14 Playback", 0, 0, 0, 0),
14710 SND_SOC_DAPM_AIF_IN("MM_DL15", "MultiMedia15 Playback", 0, 0, 0, 0),
14711 SND_SOC_DAPM_AIF_IN("MM_DL16", "MultiMedia16 Playback", 0, 0, 0, 0),
14712 SND_SOC_DAPM_AIF_IN("MM_DL20", "MultiMedia20 Playback", 0, 0, 0, 0),
14713 SND_SOC_DAPM_AIF_IN("VOIP_DL", "VoIP Playback", 0, 0, 0, 0),
14714 SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0),
14715 SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0),
14716 SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, 0, 0, 0),
14717 SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, 0, 0, 0),
14718 SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, 0, 0, 0),
14719 SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, 0, 0, 0),
14720 SND_SOC_DAPM_AIF_OUT("MM_UL8", "MultiMedia8 Capture", 0, 0, 0, 0),
14721 SND_SOC_DAPM_AIF_OUT("MM_UL9", "MultiMedia9 Capture", 0, 0, 0, 0),
Laxminath Kasam38070be2017-08-17 18:21:59 +053014722 SND_SOC_DAPM_AIF_OUT("MM_UL10", "MultiMedia10 Capture", 0, 0, 0, 0),
Asish Bhattacharya34504582017-08-08 12:55:01 +053014723 SND_SOC_DAPM_AIF_OUT("MM_UL16", "MultiMedia16 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014724 SND_SOC_DAPM_AIF_OUT("MM_UL17", "MultiMedia17 Capture", 0, 0, 0, 0),
14725 SND_SOC_DAPM_AIF_OUT("MM_UL18", "MultiMedia18 Capture", 0, 0, 0, 0),
14726 SND_SOC_DAPM_AIF_OUT("MM_UL19", "MultiMedia19 Capture", 0, 0, 0, 0),
14727 SND_SOC_DAPM_AIF_OUT("MM_UL20", "MultiMedia20 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014728 SND_SOC_DAPM_AIF_OUT("VOIP_UL", "VoIP Capture", 0, 0, 0, 0),
14729 SND_SOC_DAPM_AIF_IN("VOICEMMODE1_DL",
14730 "VoiceMMode1 Playback", 0, 0, 0, 0),
14731 SND_SOC_DAPM_AIF_OUT("VOICEMMODE1_UL",
14732 "VoiceMMode1 Capture", 0, 0, 0, 0),
14733 SND_SOC_DAPM_AIF_IN("VOICEMMODE2_DL",
14734 "VoiceMMode2 Playback", 0, 0, 0, 0),
14735 SND_SOC_DAPM_AIF_OUT("VOICEMMODE2_UL",
14736 "VoiceMMode2 Capture", 0, 0, 0, 0),
14737 SND_SOC_DAPM_AIF_IN("SLIM0_DL_HL", "SLIMBUS0_HOSTLESS Playback",
14738 0, 0, 0, 0),
14739 SND_SOC_DAPM_AIF_OUT("SLIM0_UL_HL", "SLIMBUS0_HOSTLESS Capture",
14740 0, 0, 0, 0),
14741 SND_SOC_DAPM_AIF_OUT("CPE_LSM_UL_HL", "CPE LSM capture",
14742 0, 0, 0, 0),
14743 SND_SOC_DAPM_AIF_IN("SLIM1_DL_HL", "SLIMBUS1_HOSTLESS Playback",
14744 0, 0, 0, 0),
14745 SND_SOC_DAPM_AIF_OUT("SLIM1_UL_HL", "SLIMBUS1_HOSTLESS Capture",
14746 0, 0, 0, 0),
14747 SND_SOC_DAPM_AIF_IN("SLIM3_DL_HL", "SLIMBUS3_HOSTLESS Playback",
14748 0, 0, 0, 0),
14749 SND_SOC_DAPM_AIF_OUT("SLIM3_UL_HL", "SLIMBUS3_HOSTLESS Capture",
14750 0, 0, 0, 0),
14751 SND_SOC_DAPM_AIF_IN("SLIM4_DL_HL", "SLIMBUS4_HOSTLESS Playback",
14752 0, 0, 0, 0),
14753 SND_SOC_DAPM_AIF_OUT("SLIM4_UL_HL", "SLIMBUS4_HOSTLESS Capture",
14754 0, 0, 0, 0),
14755 SND_SOC_DAPM_AIF_IN("SLIM6_DL_HL", "SLIMBUS6_HOSTLESS Playback",
14756 0, 0, 0, 0),
14757 SND_SOC_DAPM_AIF_OUT("SLIM6_UL_HL", "SLIMBUS6_HOSTLESS Capture",
14758 0, 0, 0, 0),
14759 SND_SOC_DAPM_AIF_IN("SLIM7_DL_HL", "SLIMBUS7_HOSTLESS Playback",
14760 0, 0, 0, 0),
14761 SND_SOC_DAPM_AIF_OUT("SLIM7_UL_HL", "SLIMBUS7_HOSTLESS Capture",
14762 0, 0, 0, 0),
14763 SND_SOC_DAPM_AIF_IN("SLIM8_DL_HL", "SLIMBUS8_HOSTLESS Playback",
14764 0, 0, 0, 0),
14765 SND_SOC_DAPM_AIF_OUT("SLIM8_UL_HL", "SLIMBUS8_HOSTLESS Capture",
14766 0, 0, 0, 0),
14767 SND_SOC_DAPM_AIF_IN("INTFM_DL_HL", "INT_FM_HOSTLESS Playback",
14768 0, 0, 0, 0),
14769 SND_SOC_DAPM_AIF_OUT("INTFM_UL_HL", "INT_FM_HOSTLESS Capture",
14770 0, 0, 0, 0),
14771 SND_SOC_DAPM_AIF_IN("INTHFP_DL_HL", "INT_HFP_BT_HOSTLESS Playback",
14772 0, 0, 0, 0),
14773 SND_SOC_DAPM_AIF_OUT("INTHFP_UL_HL", "INT_HFP_BT_HOSTLESS Capture",
14774 0, 0, 0, 0),
14775 SND_SOC_DAPM_AIF_IN("USBAUDIO_DL_HL", "USBAUDIO_HOSTLESS Playback",
14776 0, 0, 0, 0),
14777 SND_SOC_DAPM_AIF_OUT("USBAUDIO_UL_HL", "USBAUDIO_HOSTLESS Capture",
14778 0, 0, 0, 0),
14779 SND_SOC_DAPM_AIF_IN("HDMI_DL_HL", "HDMI_HOSTLESS Playback", 0, 0, 0, 0),
14780 SND_SOC_DAPM_AIF_IN("SEC_I2S_DL_HL", "SEC_I2S_RX_HOSTLESS Playback",
14781 0, 0, 0, 0),
14782 SND_SOC_DAPM_AIF_IN("INT0_MI2S_DL_HL",
14783 "INT0 MI2S_RX Hostless Playback",
14784 0, 0, 0, 0),
14785 SND_SOC_DAPM_AIF_IN("INT4_MI2S_DL_HL",
14786 "INT4 MI2S_RX Hostless Playback",
14787 0, 0, 0, 0),
14788 SND_SOC_DAPM_AIF_IN("PRI_MI2S_DL_HL",
14789 "Primary MI2S_RX Hostless Playback",
14790 0, 0, 0, 0),
14791 SND_SOC_DAPM_AIF_IN("SEC_MI2S_DL_HL",
14792 "Secondary MI2S_RX Hostless Playback",
14793 0, 0, 0, 0),
14794 SND_SOC_DAPM_AIF_IN("TERT_MI2S_DL_HL",
14795 "Tertiary MI2S_RX Hostless Playback",
14796 0, 0, 0, 0),
14797 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_DL_HL",
14798 "Quaternary MI2S_RX Hostless Playback",
14799 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053014800 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_DL_HL",
14801 "Quinary MI2S_RX Hostless Playback",
14802 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014803
14804 SND_SOC_DAPM_AIF_IN("AUXPCM_DL_HL", "AUXPCM_HOSTLESS Playback",
14805 0, 0, 0, 0),
14806 SND_SOC_DAPM_AIF_OUT("AUXPCM_UL_HL", "AUXPCM_HOSTLESS Capture",
14807 0, 0, 0, 0),
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080014808 SND_SOC_DAPM_AIF_IN("SEC_AUXPCM_DL_HL", "SEC_AUXPCM_HOSTLESS Playback",
14809 0, 0, 0, 0),
14810 SND_SOC_DAPM_AIF_OUT("SEC_AUXPCM_UL_HL", "SEC_AUXPCM_HOSTLESS Capture",
14811 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014812 SND_SOC_DAPM_AIF_OUT("MI2S_UL_HL", "MI2S_TX_HOSTLESS Capture",
14813 0, 0, 0, 0),
14814 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_UL_HL",
14815 "INT3 MI2S_TX Hostless Capture",
14816 0, 0, 0, 0),
14817 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_UL_HL",
14818 "Tertiary MI2S_TX Hostless Capture",
14819 0, 0, 0, 0),
14820 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_UL_HL",
14821 "Secondary MI2S_TX Hostless Capture",
14822 0, 0, 0, 0),
14823 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_UL_HL",
14824 "Primary MI2S_TX Hostless Capture",
14825 0, 0, 0, 0),
14826 SND_SOC_DAPM_AIF_OUT("MI2S_DL_HL", "MI2S_RX_HOSTLESS Playback",
14827 0, 0, 0, 0),
14828 SND_SOC_DAPM_AIF_IN("DTMF_DL_HL", "DTMF_RX_HOSTLESS Playback",
14829 0, 0, 0, 0),
14830 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_UL_HL",
14831 "Quaternary MI2S_TX Hostless Capture",
14832 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053014833 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_UL_HL",
14834 "Quinary MI2S_TX Hostless Capture",
14835 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014836
14837 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_0_DL_HL",
14838 "Primary TDM0 Hostless Playback",
14839 0, 0, 0, 0),
14840 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_0_UL_HL",
14841 "Primary TDM0 Hostless Capture",
14842 0, 0, 0, 0),
14843 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_1_DL_HL",
14844 "Primary TDM1 Hostless Playback",
14845 0, 0, 0, 0),
14846 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_1_UL_HL",
14847 "Primary TDM1 Hostless Capture",
14848 0, 0, 0, 0),
14849 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_2_DL_HL",
14850 "Primary TDM2 Hostless Playback",
14851 0, 0, 0, 0),
14852 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_2_UL_HL",
14853 "Primary TDM2 Hostless Capture",
14854 0, 0, 0, 0),
14855 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_3_DL_HL",
14856 "Primary TDM3 Hostless Playback",
14857 0, 0, 0, 0),
14858 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_3_UL_HL",
14859 "Primary TDM3 Hostless Capture",
14860 0, 0, 0, 0),
14861 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_4_DL_HL",
14862 "Primary TDM4 Hostless Playback",
14863 0, 0, 0, 0),
14864 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_4_UL_HL",
14865 "Primary TDM4 Hostless Capture",
14866 0, 0, 0, 0),
14867 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_5_DL_HL",
14868 "Primary TDM5 Hostless Playback",
14869 0, 0, 0, 0),
14870 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_5_UL_HL",
14871 "Primary TDM5 Hostless Capture",
14872 0, 0, 0, 0),
14873 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_6_DL_HL",
14874 "Primary TDM6 Hostless Playback",
14875 0, 0, 0, 0),
14876 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_6_UL_HL",
14877 "Primary TDM6 Hostless Capture",
14878 0, 0, 0, 0),
14879 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_7_DL_HL",
14880 "Primary TDM7 Hostless Playback",
14881 0, 0, 0, 0),
14882 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_7_UL_HL",
14883 "Primary TDM7 Hostless Capture",
14884 0, 0, 0, 0),
14885 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_0_DL_HL",
14886 "Secondary TDM0 Hostless Playback",
14887 0, 0, 0, 0),
14888 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_0_UL_HL",
14889 "Secondary TDM0 Hostless Capture",
14890 0, 0, 0, 0),
14891 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_1_DL_HL",
14892 "Secondary TDM1 Hostless Playback",
14893 0, 0, 0, 0),
14894 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_1_UL_HL",
14895 "Secondary TDM1 Hostless Capture",
14896 0, 0, 0, 0),
14897 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_2_DL_HL",
14898 "Secondary TDM2 Hostless Playback",
14899 0, 0, 0, 0),
14900 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_2_UL_HL",
14901 "Secondary TDM2 Hostless Capture",
14902 0, 0, 0, 0),
14903 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_3_DL_HL",
14904 "Secondary TDM3 Hostless Playback",
14905 0, 0, 0, 0),
14906 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_3_UL_HL",
14907 "Secondary TDM3 Hostless Capture",
14908 0, 0, 0, 0),
14909 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_4_DL_HL",
14910 "Secondary TDM4 Hostless Playback",
14911 0, 0, 0, 0),
14912 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_4_UL_HL",
14913 "Secondary TDM4 Hostless Capture",
14914 0, 0, 0, 0),
14915 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_5_DL_HL",
14916 "Secondary TDM5 Hostless Playback",
14917 0, 0, 0, 0),
14918 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_5_UL_HL",
14919 "Secondary TDM5 Hostless Capture",
14920 0, 0, 0, 0),
14921 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_6_DL_HL",
14922 "Secondary TDM6 Hostless Playback",
14923 0, 0, 0, 0),
14924 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_6_UL_HL",
14925 "Secondary TDM6 Hostless Capture",
14926 0, 0, 0, 0),
14927 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_7_DL_HL",
14928 "Secondary TDM7 Hostless Playback",
14929 0, 0, 0, 0),
14930 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_7_UL_HL",
14931 "Secondary TDM7 Hostless Capture",
14932 0, 0, 0, 0),
14933 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_0_DL_HL",
14934 "Tertiary TDM0 Hostless Playback",
14935 0, 0, 0, 0),
14936 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_0_UL_HL",
14937 "Tertiary TDM0 Hostless Capture",
14938 0, 0, 0, 0),
14939 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_1_DL_HL",
14940 "Tertiary TDM1 Hostless Playback",
14941 0, 0, 0, 0),
14942 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_1_UL_HL",
14943 "Tertiary TDM1 Hostless Capture",
14944 0, 0, 0, 0),
14945 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_2_DL_HL",
14946 "Tertiary TDM2 Hostless Playback",
14947 0, 0, 0, 0),
14948 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_2_UL_HL",
14949 "Tertiary TDM2 Hostless Capture",
14950 0, 0, 0, 0),
14951 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_3_DL_HL",
14952 "Tertiary TDM3 Hostless Playback",
14953 0, 0, 0, 0),
14954 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_3_UL_HL",
14955 "Tertiary TDM3 Hostless Capture",
14956 0, 0, 0, 0),
14957 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_4_DL_HL",
14958 "Tertiary TDM4 Hostless Playback",
14959 0, 0, 0, 0),
14960 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_4_UL_HL",
14961 "Tertiary TDM4 Hostless Capture",
14962 0, 0, 0, 0),
14963 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_5_DL_HL",
14964 "Tertiary TDM5 Hostless Playback",
14965 0, 0, 0, 0),
14966 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_5_UL_HL",
14967 "Tertiary TDM5 Hostless Capture",
14968 0, 0, 0, 0),
14969 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_6_DL_HL",
14970 "Tertiary TDM6 Hostless Playback",
14971 0, 0, 0, 0),
14972 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_6_UL_HL",
14973 "Tertiary TDM6 Hostless Capture",
14974 0, 0, 0, 0),
14975 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_7_DL_HL",
14976 "Tertiary TDM7 Hostless Playback",
14977 0, 0, 0, 0),
14978 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_7_UL_HL",
14979 "Tertiary TDM7 Hostless Capture",
14980 0, 0, 0, 0),
14981 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_0_DL_HL",
14982 "Quaternary TDM0 Hostless Playback",
14983 0, 0, 0, 0),
14984 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_0_UL_HL",
14985 "Quaternary TDM0 Hostless Capture",
14986 0, 0, 0, 0),
14987 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_1_DL_HL",
14988 "Quaternary TDM1 Hostless Playback",
14989 0, 0, 0, 0),
14990 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_1_UL_HL",
14991 "Quaternary TDM1 Hostless Capture",
14992 0, 0, 0, 0),
14993 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_2_DL_HL",
14994 "Quaternary TDM2 Hostless Playback",
14995 0, 0, 0, 0),
14996 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_2_UL_HL",
14997 "Quaternary TDM2 Hostless Capture",
14998 0, 0, 0, 0),
14999 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_3_DL_HL",
15000 "Quaternary TDM3 Hostless Playback",
15001 0, 0, 0, 0),
15002 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_3_UL_HL",
15003 "Quaternary TDM3 Hostless Capture",
15004 0, 0, 0, 0),
15005 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_4_DL_HL",
15006 "Quaternary TDM4 Hostless Playback",
15007 0, 0, 0, 0),
15008 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_4_UL_HL",
15009 "Quaternary TDM4 Hostless Capture",
15010 0, 0, 0, 0),
15011 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_5_DL_HL",
15012 "Quaternary TDM5 Hostless Playback",
15013 0, 0, 0, 0),
15014 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_5_UL_HL",
15015 "Quaternary TDM5 Hostless Capture",
15016 0, 0, 0, 0),
15017 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_6_DL_HL",
15018 "Quaternary TDM6 Hostless Playback",
15019 0, 0, 0, 0),
15020 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_6_UL_HL",
15021 "Quaternary TDM6 Hostless Capture",
15022 0, 0, 0, 0),
15023 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_7_DL_HL",
15024 "Quaternary TDM7 Hostless Playback",
15025 0, 0, 0, 0),
15026 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_7_UL_HL",
15027 "Quaternary TDM7 Hostless Capture",
15028 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053015029 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_0_DL_HL",
15030 "Quinary TDM0 Hostless Playback",
15031 0, 0, 0, 0),
15032 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_0_UL_HL",
15033 "Quinary TDM0 Hostless Capture",
15034 0, 0, 0, 0),
15035 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_1_DL_HL",
15036 "Quinary TDM1 Hostless Playback",
15037 0, 0, 0, 0),
15038 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_1_UL_HL",
15039 "Quinary TDM1 Hostless Capture",
15040 0, 0, 0, 0),
15041 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_2_DL_HL",
15042 "Quinary TDM2 Hostless Playback",
15043 0, 0, 0, 0),
15044 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_2_UL_HL",
15045 "Quinary TDM2 Hostless Capture",
15046 0, 0, 0, 0),
15047 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_3_DL_HL",
15048 "Quinary TDM3 Hostless Playback",
15049 0, 0, 0, 0),
15050 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_3_UL_HL",
15051 "Quinary TDM3 Hostless Capture",
15052 0, 0, 0, 0),
15053 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_4_DL_HL",
15054 "Quinary TDM4 Hostless Playback",
15055 0, 0, 0, 0),
15056 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_4_UL_HL",
15057 "Quinary TDM4 Hostless Capture",
15058 0, 0, 0, 0),
15059 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_5_DL_HL",
15060 "Quinary TDM5 Hostless Playback",
15061 0, 0, 0, 0),
15062 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_5_UL_HL",
15063 "Quinary TDM5 Hostless Capture",
15064 0, 0, 0, 0),
15065 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_6_DL_HL",
15066 "Quinary TDM6 Hostless Playback",
15067 0, 0, 0, 0),
15068 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_6_UL_HL",
15069 "Quinary TDM6 Hostless Capture",
15070 0, 0, 0, 0),
15071 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_7_DL_HL",
15072 "Quinary TDM7 Hostless Playback",
15073 0, 0, 0, 0),
15074 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_7_UL_HL",
15075 "Quinary TDM7 Hostless Capture",
15076 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015077
15078 /* LSM */
15079 SND_SOC_DAPM_AIF_OUT("LSM1_UL_HL", "Listen 1 Audio Service Capture",
15080 0, 0, 0, 0),
15081 SND_SOC_DAPM_AIF_OUT("LSM2_UL_HL", "Listen 2 Audio Service Capture",
15082 0, 0, 0, 0),
15083 SND_SOC_DAPM_AIF_OUT("LSM3_UL_HL", "Listen 3 Audio Service Capture",
15084 0, 0, 0, 0),
15085 SND_SOC_DAPM_AIF_OUT("LSM4_UL_HL", "Listen 4 Audio Service Capture",
15086 0, 0, 0, 0),
15087 SND_SOC_DAPM_AIF_OUT("LSM5_UL_HL", "Listen 5 Audio Service Capture",
15088 0, 0, 0, 0),
15089 SND_SOC_DAPM_AIF_OUT("LSM6_UL_HL", "Listen 6 Audio Service Capture",
15090 0, 0, 0, 0),
15091 SND_SOC_DAPM_AIF_OUT("LSM7_UL_HL", "Listen 7 Audio Service Capture",
15092 0, 0, 0, 0),
15093 SND_SOC_DAPM_AIF_OUT("LSM8_UL_HL", "Listen 8 Audio Service Capture",
15094 0, 0, 0, 0),
15095 SND_SOC_DAPM_AIF_IN("QCHAT_DL", "QCHAT Playback", 0, 0, 0, 0),
15096 SND_SOC_DAPM_AIF_OUT("QCHAT_UL", "QCHAT Capture", 0, 0, 0, 0),
15097 /* Backend AIF */
15098 /* Stream name equals to backend dai link stream name */
15099 SND_SOC_DAPM_AIF_OUT("PRI_I2S_RX", "Primary I2S Playback", 0, 0, 0, 0),
15100 SND_SOC_DAPM_AIF_OUT("SEC_I2S_RX", "Secondary I2S Playback",
15101 0, 0, 0, 0),
15102 SND_SOC_DAPM_AIF_OUT("SPDIF_RX", "SPDIF Playback", 0, 0, 0, 0),
15103 SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_RX", "Slimbus Playback", 0, 0, 0, 0),
15104 SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_RX", "Slimbus2 Playback", 0, 0, 0, 0),
15105 SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_RX", "Slimbus5 Playback", 0, 0, 0, 0),
15106 SND_SOC_DAPM_AIF_OUT("HDMI", "HDMI Playback", 0, 0, 0, 0),
15107 SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT", "Display Port Playback",
15108 0, 0, 0, 0),
15109 SND_SOC_DAPM_AIF_OUT("MI2S_RX", "MI2S Playback", 0, 0, 0, 0),
15110 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_RX", "Quaternary MI2S Playback",
15111 0, 0, 0, 0),
15112 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_RX", "Tertiary MI2S Playback",
15113 0, 0, 0, 0),
15114 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX", "Secondary MI2S Playback",
15115 0, 0, 0, 0),
15116 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX_SD1",
15117 "Secondary MI2S Playback SD1",
15118 0, 0, 0, 0),
15119 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_RX", "Primary MI2S Playback",
15120 0, 0, 0, 0),
15121 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_RX", "INT0 MI2S Playback",
15122 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053015123 SND_SOC_DAPM_AIF_OUT("INT2_MI2S_RX", "INT2 MI2S Playback",
15124 0, 0, 0, 0),
15125 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_RX", "INT3 MI2S Playback",
15126 0, 0, 0, 0),
15127 SND_SOC_DAPM_AIF_OUT("INT5_MI2S_RX", "INT5 MI2S Playback",
15128 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015129 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_RX", "INT4 MI2S Playback",
15130 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053015131 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_TX", "INT4 MI2S Capture",
15132 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015133 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_RX", "Quinary MI2S Playback",
15134 0, 0, 0, 0),
15135 SND_SOC_DAPM_AIF_IN("PRI_I2S_TX", "Primary I2S Capture", 0, 0, 0, 0),
15136 SND_SOC_DAPM_AIF_IN("MI2S_TX", "MI2S Capture", 0, 0, 0, 0),
15137 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_TX", "Quaternary MI2S Capture",
15138 0, 0, 0, 0),
15139 SND_SOC_DAPM_AIF_IN("PRI_MI2S_TX", "Primary MI2S Capture",
15140 0, 0, 0, 0),
15141 SND_SOC_DAPM_AIF_IN("TERT_MI2S_TX", "Tertiary MI2S Capture",
15142 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053015143 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_TX", "INT0 MI2S Capture",
15144 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015145 SND_SOC_DAPM_AIF_IN("INT2_MI2S_TX", "INT2 MI2S Capture",
15146 0, 0, 0, 0),
15147 SND_SOC_DAPM_AIF_IN("INT3_MI2S_TX", "INT3 MI2S Capture",
15148 0, 0, 0, 0),
15149 SND_SOC_DAPM_AIF_IN("SEC_MI2S_TX", "Secondary MI2S Capture",
15150 0, 0, 0, 0),
15151 SND_SOC_DAPM_AIF_IN("SLIMBUS_0_TX", "Slimbus Capture", 0, 0, 0, 0),
15152 SND_SOC_DAPM_AIF_IN("SLIMBUS_2_TX", "Slimbus2 Capture", 0, 0, 0, 0),
15153 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_TX", "Quinary MI2S Capture",
15154 0, 0, 0, 0),
15155 SND_SOC_DAPM_AIF_IN("SENARY_MI2S_TX", "Senary MI2S Capture",
15156 0, 0, 0, 0),
15157 SND_SOC_DAPM_AIF_OUT("INT_BT_SCO_RX", "Internal BT-SCO Playback",
15158 0, 0, 0, 0),
15159 SND_SOC_DAPM_AIF_IN("INT_BT_SCO_TX", "Internal BT-SCO Capture",
15160 0, 0, 0, 0),
15161 SND_SOC_DAPM_AIF_OUT("INT_BT_A2DP_RX", "Internal BT-A2DP Playback",
15162 0, 0, 0, 0),
15163 SND_SOC_DAPM_AIF_OUT("INT_FM_RX", "Internal FM Playback",
15164 0, 0, 0, 0),
15165 SND_SOC_DAPM_AIF_IN("INT_FM_TX", "Internal FM Capture",
15166 0, 0, 0, 0),
15167 SND_SOC_DAPM_AIF_OUT("PCM_RX", "AFE Playback",
15168 0, 0, 0, 0),
15169 SND_SOC_DAPM_AIF_IN("PCM_TX", "AFE Capture",
15170 0, 0, 0, 0),
15171 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_0", "Primary TDM0 Playback",
15172 0, 0, 0, 0),
15173 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_0", "Primary TDM0 Capture",
15174 0, 0, 0, 0),
15175 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_1", "Primary TDM1 Playback",
15176 0, 0, 0, 0),
15177 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_1", "Primary TDM1 Capture",
15178 0, 0, 0, 0),
15179 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_2", "Primary TDM2 Playback",
15180 0, 0, 0, 0),
15181 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_2", "Primary TDM2 Capture",
15182 0, 0, 0, 0),
15183 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_3", "Primary TDM3 Playback",
15184 0, 0, 0, 0),
15185 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_3", "Primary TDM3 Capture",
15186 0, 0, 0, 0),
15187 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_4", "Primary TDM4 Playback",
15188 0, 0, 0, 0),
15189 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_4", "Primary TDM4 Capture",
15190 0, 0, 0, 0),
15191 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_5", "Primary TDM5 Playback",
15192 0, 0, 0, 0),
15193 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_5", "Primary TDM5 Capture",
15194 0, 0, 0, 0),
15195 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_6", "Primary TDM6 Playback",
15196 0, 0, 0, 0),
15197 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_6", "Primary TDM6 Capture",
15198 0, 0, 0, 0),
15199 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_7", "Primary TDM7 Playback",
15200 0, 0, 0, 0),
15201 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_7", "Primary TDM7 Capture",
15202 0, 0, 0, 0),
15203 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_0", "Secondary TDM0 Playback",
15204 0, 0, 0, 0),
15205 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_0", "Secondary TDM0 Capture",
15206 0, 0, 0, 0),
15207 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_1", "Secondary TDM1 Playback",
15208 0, 0, 0, 0),
15209 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_1", "Secondary TDM1 Capture",
15210 0, 0, 0, 0),
15211 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_2", "Secondary TDM2 Playback",
15212 0, 0, 0, 0),
15213 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_2", "Secondary TDM2 Capture",
15214 0, 0, 0, 0),
15215 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_3", "Secondary TDM3 Playback",
15216 0, 0, 0, 0),
15217 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_3", "Secondary TDM3 Capture",
15218 0, 0, 0, 0),
15219 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_4", "Secondary TDM4 Playback",
15220 0, 0, 0, 0),
15221 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_4", "Secondary TDM4 Capture",
15222 0, 0, 0, 0),
15223 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_5", "Secondary TDM5 Playback",
15224 0, 0, 0, 0),
15225 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_5", "Secondary TDM5 Capture",
15226 0, 0, 0, 0),
15227 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_6", "Secondary TDM6 Playback",
15228 0, 0, 0, 0),
15229 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_6", "Secondary TDM6 Capture",
15230 0, 0, 0, 0),
15231 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_7", "Secondary TDM7 Playback",
15232 0, 0, 0, 0),
15233 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_7", "Secondary TDM7 Capture",
15234 0, 0, 0, 0),
15235 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_0", "Tertiary TDM0 Playback",
15236 0, 0, 0, 0),
15237 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_0", "Tertiary TDM0 Capture",
15238 0, 0, 0, 0),
15239 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_1", "Tertiary TDM1 Playback",
15240 0, 0, 0, 0),
15241 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_1", "Tertiary TDM1 Capture",
15242 0, 0, 0, 0),
15243 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_2", "Tertiary TDM2 Playback",
15244 0, 0, 0, 0),
15245 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_2", "Tertiary TDM2 Capture",
15246 0, 0, 0, 0),
15247 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_3", "Tertiary TDM3 Playback",
15248 0, 0, 0, 0),
15249 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_3", "Tertiary TDM3 Capture",
15250 0, 0, 0, 0),
15251 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_4", "Tertiary TDM4 Playback",
15252 0, 0, 0, 0),
15253 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_4", "Tertiary TDM4 Capture",
15254 0, 0, 0, 0),
15255 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_5", "Tertiary TDM5 Playback",
15256 0, 0, 0, 0),
15257 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_5", "Tertiary TDM5 Capture",
15258 0, 0, 0, 0),
15259 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_6", "Tertiary TDM6 Playback",
15260 0, 0, 0, 0),
15261 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_6", "Tertiary TDM6 Capture",
15262 0, 0, 0, 0),
15263 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_7", "Tertiary TDM7 Playback",
15264 0, 0, 0, 0),
15265 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_7", "Tertiary TDM7 Capture",
15266 0, 0, 0, 0),
15267 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_0", "Quaternary TDM0 Playback",
15268 0, 0, 0, 0),
15269 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_0", "Quaternary TDM0 Capture",
15270 0, 0, 0, 0),
15271 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_1", "Quaternary TDM1 Playback",
15272 0, 0, 0, 0),
15273 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_1", "Quaternary TDM1 Capture",
15274 0, 0, 0, 0),
15275 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_2", "Quaternary TDM2 Playback",
15276 0, 0, 0, 0),
15277 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_2", "Quaternary TDM2 Capture",
15278 0, 0, 0, 0),
15279 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_3", "Quaternary TDM3 Playback",
15280 0, 0, 0, 0),
15281 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_3", "Quaternary TDM3 Capture",
15282 0, 0, 0, 0),
15283 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_4", "Quaternary TDM4 Playback",
15284 0, 0, 0, 0),
15285 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_4", "Quaternary TDM4 Capture",
15286 0, 0, 0, 0),
15287 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_5", "Quaternary TDM5 Playback",
15288 0, 0, 0, 0),
15289 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_5", "Quaternary TDM5 Capture",
15290 0, 0, 0, 0),
15291 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_6", "Quaternary TDM6 Playback",
15292 0, 0, 0, 0),
15293 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_6", "Quaternary TDM6 Capture",
15294 0, 0, 0, 0),
15295 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_7", "Quaternary TDM7 Playback",
15296 0, 0, 0, 0),
15297 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_7", "Quaternary TDM7 Capture",
15298 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053015299 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_0", "Quinary TDM0 Playback",
15300 0, 0, 0, 0),
15301 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_0", "Quinary TDM0 Capture",
15302 0, 0, 0, 0),
15303 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_1", "Quinary TDM1 Playback",
15304 0, 0, 0, 0),
15305 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_1", "Quinary TDM1 Capture",
15306 0, 0, 0, 0),
15307 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_2", "Quinary TDM2 Playback",
15308 0, 0, 0, 0),
15309 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_2", "Quinary TDM2 Capture",
15310 0, 0, 0, 0),
15311 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_3", "Quinary TDM3 Playback",
15312 0, 0, 0, 0),
15313 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_3", "Quinary TDM3 Capture",
15314 0, 0, 0, 0),
15315 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_4", "Quinary TDM4 Playback",
15316 0, 0, 0, 0),
15317 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_4", "Quinary TDM4 Capture",
15318 0, 0, 0, 0),
15319 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_5", "Quinary TDM5 Playback",
15320 0, 0, 0, 0),
15321 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_5", "Quinary TDM5 Capture",
15322 0, 0, 0, 0),
15323 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_6", "Quinary TDM6 Playback",
15324 0, 0, 0, 0),
15325 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_6", "Quinary TDM6 Capture",
15326 0, 0, 0, 0),
15327 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_7", "Quinary TDM7 Playback",
15328 0, 0, 0, 0),
15329 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_7", "Quinary TDM7 Capture",
15330 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015331 /* incall */
15332 SND_SOC_DAPM_AIF_OUT("VOICE_PLAYBACK_TX", "Voice Farend Playback",
15333 0, 0, 0, 0),
15334 SND_SOC_DAPM_AIF_OUT("VOICE2_PLAYBACK_TX", "Voice2 Farend Playback",
15335 0, 0, 0, 0),
15336 SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_RX", "Slimbus4 Playback",
15337 0, 0, 0, 0),
15338 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_TX", "Voice Uplink Capture",
15339 0, 0, 0, 0),
15340 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_RX", "Voice Downlink Capture",
15341 0, 0, 0, 0),
15342 SND_SOC_DAPM_AIF_IN("SLIMBUS_4_TX", "Slimbus4 Capture",
15343 0, 0, 0, 0),
15344 SND_SOC_DAPM_AIF_IN("SENARY_TX", "Senary_mi2s Capture",
15345 0, 0, 0, 0),
15346 SND_SOC_DAPM_AIF_IN("INT5_MI2S_TX", "INT5 MI2S Capture",
15347 0, 0, 0, 0),
15348 SND_SOC_DAPM_AIF_IN("SLIMBUS_5_TX", "Slimbus5 Capture", 0, 0, 0, 0),
15349
15350 SND_SOC_DAPM_AIF_OUT("AUX_PCM_RX", "AUX PCM Playback", 0, 0, 0, 0),
15351 SND_SOC_DAPM_AIF_IN("AUX_PCM_TX", "AUX PCM Capture", 0, 0, 0, 0),
15352 SND_SOC_DAPM_AIF_OUT("SEC_AUX_PCM_RX", "Sec AUX PCM Playback",
15353 0, 0, 0, 0),
15354 SND_SOC_DAPM_AIF_IN("SEC_AUX_PCM_TX", "Sec AUX PCM Capture",
15355 0, 0, 0, 0),
15356 SND_SOC_DAPM_AIF_OUT("TERT_AUX_PCM_RX", "Tert AUX PCM Playback",
15357 0, 0, 0, 0),
15358 SND_SOC_DAPM_AIF_IN("TERT_AUX_PCM_TX", "Tert AUX PCM Capture",
15359 0, 0, 0, 0),
15360 SND_SOC_DAPM_AIF_OUT("QUAT_AUX_PCM_RX", "Quat AUX PCM Playback",
15361 0, 0, 0, 0),
15362 SND_SOC_DAPM_AIF_IN("QUAT_AUX_PCM_TX", "Quat AUX PCM Capture",
15363 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053015364 SND_SOC_DAPM_AIF_OUT("QUIN_AUX_PCM_RX", "Quin AUX PCM Playback",
15365 0, 0, 0, 0),
15366 SND_SOC_DAPM_AIF_IN("QUIN_AUX_PCM_TX", "Quin AUX PCM Capture",
15367 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015368 SND_SOC_DAPM_AIF_IN("VOICE_STUB_DL", "VOICE_STUB Playback", 0, 0, 0, 0),
15369 SND_SOC_DAPM_AIF_OUT("VOICE_STUB_UL", "VOICE_STUB Capture", 0, 0, 0, 0),
15370 SND_SOC_DAPM_AIF_IN("VOICE2_STUB_DL", "VOICE2_STUB Playback",
15371 0, 0, 0, 0),
15372 SND_SOC_DAPM_AIF_OUT("VOICE2_STUB_UL", "VOICE2_STUB Capture",
15373 0, 0, 0, 0),
15374 SND_SOC_DAPM_AIF_IN("VOLTE_STUB_DL", "VOLTE_STUB Playback", 0, 0, 0, 0),
15375 SND_SOC_DAPM_AIF_OUT("VOLTE_STUB_UL", "VOLTE_STUB Capture", 0, 0, 0, 0),
15376 SND_SOC_DAPM_AIF_OUT("STUB_RX", "Stub Playback", 0, 0, 0, 0),
15377 SND_SOC_DAPM_AIF_IN("STUB_TX", "Stub Capture", 0, 0, 0, 0),
15378 SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_RX", "Slimbus1 Playback", 0, 0, 0, 0),
15379 SND_SOC_DAPM_AIF_IN("SLIMBUS_1_TX", "Slimbus1 Capture", 0, 0, 0, 0),
15380 SND_SOC_DAPM_AIF_IN("STUB_1_TX", "Stub1 Capture", 0, 0, 0, 0),
15381 SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_RX", "Slimbus3 Playback", 0, 0, 0, 0),
15382 SND_SOC_DAPM_AIF_IN("SLIMBUS_3_TX", "Slimbus3 Capture", 0, 0, 0, 0),
15383 /* In- call recording */
15384 SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_RX", "Slimbus6 Playback", 0, 0, 0, 0),
15385 SND_SOC_DAPM_AIF_IN("SLIMBUS_6_TX", "Slimbus6 Capture", 0, 0, 0, 0),
15386
15387 SND_SOC_DAPM_AIF_OUT("SLIMBUS_7_RX", "Slimbus7 Playback", 0, 0, 0, 0),
15388 SND_SOC_DAPM_AIF_IN("SLIMBUS_7_TX", "Slimbus7 Capture", 0, 0, 0, 0),
15389
15390 SND_SOC_DAPM_AIF_OUT("SLIMBUS_8_RX", "Slimbus8 Playback", 0, 0, 0, 0),
15391 SND_SOC_DAPM_AIF_IN("SLIMBUS_8_TX", "Slimbus8 Capture", 0, 0, 0, 0),
15392 SND_SOC_DAPM_AIF_OUT("USB_AUDIO_RX", "USB Audio Playback", 0, 0, 0, 0),
15393 SND_SOC_DAPM_AIF_IN("USB_AUDIO_TX", "USB Audio Capture", 0, 0, 0, 0),
15394
15395 /* Switch Definitions */
15396 SND_SOC_DAPM_SWITCH("SLIMBUS_DL_HL", SND_SOC_NOPM, 0, 0,
15397 &slim_fm_switch_mixer_controls),
15398 SND_SOC_DAPM_SWITCH("SLIMBUS1_DL_HL", SND_SOC_NOPM, 0, 0,
15399 &slim1_fm_switch_mixer_controls),
15400 SND_SOC_DAPM_SWITCH("SLIMBUS3_DL_HL", SND_SOC_NOPM, 0, 0,
15401 &slim3_fm_switch_mixer_controls),
15402 SND_SOC_DAPM_SWITCH("SLIMBUS4_DL_HL", SND_SOC_NOPM, 0, 0,
15403 &slim4_fm_switch_mixer_controls),
15404 SND_SOC_DAPM_SWITCH("SLIMBUS6_DL_HL", SND_SOC_NOPM, 0, 0,
15405 &slim6_fm_switch_mixer_controls),
15406 SND_SOC_DAPM_SWITCH("PCM_RX_DL_HL", SND_SOC_NOPM, 0, 0,
15407 &pcm_rx_switch_mixer_controls),
15408 SND_SOC_DAPM_SWITCH("INT0_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
15409 &int0_mi2s_rx_switch_mixer_controls),
15410 SND_SOC_DAPM_SWITCH("INT4_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
15411 &int4_mi2s_rx_switch_mixer_controls),
15412 SND_SOC_DAPM_SWITCH("PRI_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
15413 &pri_mi2s_rx_switch_mixer_controls),
15414 SND_SOC_DAPM_SWITCH("SEC_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
15415 &sec_mi2s_rx_switch_mixer_controls),
15416 SND_SOC_DAPM_SWITCH("TERT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
15417 &tert_mi2s_rx_switch_mixer_controls),
15418 SND_SOC_DAPM_SWITCH("QUAT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
15419 &quat_mi2s_rx_switch_mixer_controls),
Rohit Kumara5077932017-09-10 22:05:05 +053015420 SND_SOC_DAPM_SWITCH("QUIN_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
15421 &quin_mi2s_rx_switch_mixer_controls),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015422 SND_SOC_DAPM_SWITCH("HFP_PRI_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
15423 &hfp_pri_aux_switch_mixer_controls),
15424 SND_SOC_DAPM_SWITCH("HFP_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
15425 &hfp_aux_switch_mixer_controls),
15426 SND_SOC_DAPM_SWITCH("HFP_INT_UL_HL", SND_SOC_NOPM, 0, 0,
15427 &hfp_int_switch_mixer_controls),
15428 SND_SOC_DAPM_SWITCH("HFP_SLIM7_UL_HL", SND_SOC_NOPM, 0, 0,
15429 &hfp_slim7_switch_mixer_controls),
15430 SND_SOC_DAPM_SWITCH("USB_DL_HL", SND_SOC_NOPM, 0, 0,
15431 &usb_switch_mixer_controls),
15432
15433 /* Mixer definitions */
15434 SND_SOC_DAPM_MIXER("PRI_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15435 pri_i2s_rx_mixer_controls, ARRAY_SIZE(pri_i2s_rx_mixer_controls)),
15436 SND_SOC_DAPM_MIXER("SEC_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15437 sec_i2s_rx_mixer_controls, ARRAY_SIZE(sec_i2s_rx_mixer_controls)),
15438 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15439 slimbus_rx_mixer_controls, ARRAY_SIZE(slimbus_rx_mixer_controls)),
15440 SND_SOC_DAPM_MIXER("SLIMBUS_2_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15441 slimbus_2_rx_mixer_controls, ARRAY_SIZE(slimbus_2_rx_mixer_controls)),
15442 SND_SOC_DAPM_MIXER("SLIMBUS_5_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15443 slimbus_5_rx_mixer_controls, ARRAY_SIZE(slimbus_5_rx_mixer_controls)),
15444 SND_SOC_DAPM_MIXER("SLIMBUS_7_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15445 slimbus_7_rx_mixer_controls, ARRAY_SIZE(slimbus_7_rx_mixer_controls)),
15446 SND_SOC_DAPM_MIXER("HDMI Mixer", SND_SOC_NOPM, 0, 0,
15447 hdmi_mixer_controls, ARRAY_SIZE(hdmi_mixer_controls)),
15448 SND_SOC_DAPM_MIXER("DISPLAY_PORT Mixer", SND_SOC_NOPM, 0, 0,
15449 display_port_mixer_controls, ARRAY_SIZE(display_port_mixer_controls)),
15450 SND_SOC_DAPM_MIXER("SPDIF_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15451 spdif_rx_mixer_controls, ARRAY_SIZE(spdif_rx_mixer_controls)),
15452 SND_SOC_DAPM_MIXER("MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15453 mi2s_rx_mixer_controls, ARRAY_SIZE(mi2s_rx_mixer_controls)),
15454 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15455 quaternary_mi2s_rx_mixer_controls,
15456 ARRAY_SIZE(quaternary_mi2s_rx_mixer_controls)),
15457 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15458 tertiary_mi2s_rx_mixer_controls,
15459 ARRAY_SIZE(tertiary_mi2s_rx_mixer_controls)),
15460 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15461 secondary_mi2s_rx_mixer_controls,
15462 ARRAY_SIZE(secondary_mi2s_rx_mixer_controls)),
15463 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_SD1 Audio Mixer", SND_SOC_NOPM, 0, 0,
15464 secondary_mi2s_rx2_mixer_controls,
15465 ARRAY_SIZE(secondary_mi2s_rx2_mixer_controls)),
15466 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15467 primary_mi2s_rx_mixer_controls,
15468 ARRAY_SIZE(primary_mi2s_rx_mixer_controls)),
15469 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15470 int0_mi2s_rx_mixer_controls,
15471 ARRAY_SIZE(int0_mi2s_rx_mixer_controls)),
15472 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15473 int4_mi2s_rx_mixer_controls,
15474 ARRAY_SIZE(int4_mi2s_rx_mixer_controls)),
15475 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15476 quinary_mi2s_rx_mixer_controls,
15477 ARRAY_SIZE(quinary_mi2s_rx_mixer_controls)),
15478 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
15479 pri_tdm_rx_0_mixer_controls,
15480 ARRAY_SIZE(pri_tdm_rx_0_mixer_controls)),
15481 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
15482 pri_tdm_rx_1_mixer_controls,
15483 ARRAY_SIZE(pri_tdm_rx_1_mixer_controls)),
15484 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
15485 pri_tdm_rx_2_mixer_controls,
15486 ARRAY_SIZE(pri_tdm_rx_2_mixer_controls)),
15487 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
15488 pri_tdm_rx_3_mixer_controls,
15489 ARRAY_SIZE(pri_tdm_rx_3_mixer_controls)),
15490 SND_SOC_DAPM_MIXER("PRI_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
15491 pri_tdm_tx_0_mixer_controls,
15492 ARRAY_SIZE(pri_tdm_tx_0_mixer_controls)),
15493 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
15494 sec_tdm_rx_0_mixer_controls,
15495 ARRAY_SIZE(sec_tdm_rx_0_mixer_controls)),
15496 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
15497 sec_tdm_rx_1_mixer_controls,
15498 ARRAY_SIZE(sec_tdm_rx_1_mixer_controls)),
15499 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
15500 sec_tdm_rx_2_mixer_controls,
15501 ARRAY_SIZE(sec_tdm_rx_2_mixer_controls)),
15502 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
15503 sec_tdm_rx_3_mixer_controls,
15504 ARRAY_SIZE(sec_tdm_rx_3_mixer_controls)),
15505 SND_SOC_DAPM_MIXER("SEC_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
15506 sec_tdm_tx_0_mixer_controls,
15507 ARRAY_SIZE(sec_tdm_tx_0_mixer_controls)),
15508 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
15509 tert_tdm_rx_0_mixer_controls,
15510 ARRAY_SIZE(tert_tdm_rx_0_mixer_controls)),
15511 SND_SOC_DAPM_MIXER("TERT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
15512 tert_tdm_tx_0_mixer_controls,
15513 ARRAY_SIZE(tert_tdm_tx_0_mixer_controls)),
15514 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
15515 tert_tdm_rx_1_mixer_controls,
15516 ARRAY_SIZE(tert_tdm_rx_1_mixer_controls)),
15517 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
15518 tert_tdm_rx_2_mixer_controls,
15519 ARRAY_SIZE(tert_tdm_rx_2_mixer_controls)),
15520 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
15521 tert_tdm_rx_3_mixer_controls,
15522 ARRAY_SIZE(tert_tdm_rx_3_mixer_controls)),
15523 SND_SOC_DAPM_MIXER("TERT_TDM_RX_4 Audio Mixer", SND_SOC_NOPM, 0, 0,
15524 tert_tdm_rx_4_mixer_controls,
15525 ARRAY_SIZE(tert_tdm_rx_4_mixer_controls)),
15526 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
15527 quat_tdm_rx_0_mixer_controls,
15528 ARRAY_SIZE(quat_tdm_rx_0_mixer_controls)),
15529 SND_SOC_DAPM_MIXER("QUAT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
15530 quat_tdm_tx_0_mixer_controls,
15531 ARRAY_SIZE(quat_tdm_tx_0_mixer_controls)),
15532 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
15533 quat_tdm_rx_1_mixer_controls,
15534 ARRAY_SIZE(quat_tdm_rx_1_mixer_controls)),
15535 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
15536 quat_tdm_rx_2_mixer_controls,
15537 ARRAY_SIZE(quat_tdm_rx_2_mixer_controls)),
15538 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
15539 quat_tdm_rx_3_mixer_controls,
15540 ARRAY_SIZE(quat_tdm_rx_3_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053015541 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
15542 quin_tdm_rx_0_mixer_controls,
15543 ARRAY_SIZE(quin_tdm_rx_0_mixer_controls)),
15544 SND_SOC_DAPM_MIXER("QUIN_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
15545 quin_tdm_tx_0_mixer_controls,
15546 ARRAY_SIZE(quin_tdm_tx_0_mixer_controls)),
15547 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
15548 quin_tdm_rx_1_mixer_controls,
15549 ARRAY_SIZE(quin_tdm_rx_1_mixer_controls)),
15550 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
15551 quin_tdm_rx_2_mixer_controls,
15552 ARRAY_SIZE(quin_tdm_rx_2_mixer_controls)),
15553 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
15554 quin_tdm_rx_3_mixer_controls,
15555 ARRAY_SIZE(quin_tdm_rx_3_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015556 SND_SOC_DAPM_MIXER("MultiMedia1 Mixer", SND_SOC_NOPM, 0, 0,
15557 mmul1_mixer_controls, ARRAY_SIZE(mmul1_mixer_controls)),
15558 SND_SOC_DAPM_MIXER("MultiMedia2 Mixer", SND_SOC_NOPM, 0, 0,
15559 mmul2_mixer_controls, ARRAY_SIZE(mmul2_mixer_controls)),
15560 SND_SOC_DAPM_MIXER("MultiMedia3 Mixer", SND_SOC_NOPM, 0, 0,
15561 mmul3_mixer_controls, ARRAY_SIZE(mmul3_mixer_controls)),
15562 SND_SOC_DAPM_MIXER("MultiMedia4 Mixer", SND_SOC_NOPM, 0, 0,
15563 mmul4_mixer_controls, ARRAY_SIZE(mmul4_mixer_controls)),
15564 SND_SOC_DAPM_MIXER("MultiMedia5 Mixer", SND_SOC_NOPM, 0, 0,
15565 mmul5_mixer_controls, ARRAY_SIZE(mmul5_mixer_controls)),
15566 SND_SOC_DAPM_MIXER("MultiMedia6 Mixer", SND_SOC_NOPM, 0, 0,
15567 mmul6_mixer_controls, ARRAY_SIZE(mmul6_mixer_controls)),
15568 SND_SOC_DAPM_MIXER("MultiMedia8 Mixer", SND_SOC_NOPM, 0, 0,
15569 mmul8_mixer_controls, ARRAY_SIZE(mmul8_mixer_controls)),
15570 SND_SOC_DAPM_MIXER("MultiMedia9 Mixer", SND_SOC_NOPM, 0, 0,
15571 mmul9_mixer_controls, ARRAY_SIZE(mmul9_mixer_controls)),
Laxminath Kasam38070be2017-08-17 18:21:59 +053015572 SND_SOC_DAPM_MIXER("MultiMedia10 Mixer", SND_SOC_NOPM, 0, 0,
15573 mmul10_mixer_controls, ARRAY_SIZE(mmul10_mixer_controls)),
Asish Bhattacharya34504582017-08-08 12:55:01 +053015574 SND_SOC_DAPM_MIXER("MultiMedia16 Mixer", SND_SOC_NOPM, 0, 0,
15575 mmul16_mixer_controls, ARRAY_SIZE(mmul16_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015576 SND_SOC_DAPM_MIXER("MultiMedia17 Mixer", SND_SOC_NOPM, 0, 0,
15577 mmul17_mixer_controls, ARRAY_SIZE(mmul17_mixer_controls)),
15578 SND_SOC_DAPM_MIXER("MultiMedia18 Mixer", SND_SOC_NOPM, 0, 0,
15579 mmul18_mixer_controls, ARRAY_SIZE(mmul18_mixer_controls)),
15580 SND_SOC_DAPM_MIXER("MultiMedia19 Mixer", SND_SOC_NOPM, 0, 0,
15581 mmul19_mixer_controls, ARRAY_SIZE(mmul19_mixer_controls)),
15582 SND_SOC_DAPM_MIXER("MultiMedia20 Mixer", SND_SOC_NOPM, 0, 0,
15583 mmul20_mixer_controls, ARRAY_SIZE(mmul20_mixer_controls)),
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +053015584 SND_SOC_DAPM_MIXER("MultiMedia28 Mixer", SND_SOC_NOPM, 0, 0,
15585 mmul28_mixer_controls, ARRAY_SIZE(mmul28_mixer_controls)),
15586 SND_SOC_DAPM_MIXER("MultiMedia29 Mixer", SND_SOC_NOPM, 0, 0,
15587 mmul29_mixer_controls, ARRAY_SIZE(mmul29_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015588 SND_SOC_DAPM_MIXER("AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15589 auxpcm_rx_mixer_controls, ARRAY_SIZE(auxpcm_rx_mixer_controls)),
15590 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15591 sec_auxpcm_rx_mixer_controls, ARRAY_SIZE(sec_auxpcm_rx_mixer_controls)),
15592 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15593 tert_auxpcm_rx_mixer_controls,
15594 ARRAY_SIZE(tert_auxpcm_rx_mixer_controls)),
15595 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15596 quat_auxpcm_rx_mixer_controls,
15597 ARRAY_SIZE(quat_auxpcm_rx_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053015598 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15599 quin_auxpcm_rx_mixer_controls,
15600 ARRAY_SIZE(quin_auxpcm_rx_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015601 /* incall */
15602 SND_SOC_DAPM_MIXER("Incall_Music Audio Mixer", SND_SOC_NOPM, 0, 0,
15603 incall_music_delivery_mixer_controls,
15604 ARRAY_SIZE(incall_music_delivery_mixer_controls)),
15605 SND_SOC_DAPM_MIXER("Incall_Music_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
15606 incall_music2_delivery_mixer_controls,
15607 ARRAY_SIZE(incall_music2_delivery_mixer_controls)),
15608 SND_SOC_DAPM_MIXER("SLIMBUS_4_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15609 slimbus_4_rx_mixer_controls,
15610 ARRAY_SIZE(slimbus_4_rx_mixer_controls)),
15611 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15612 slimbus_6_rx_mixer_controls,
15613 ARRAY_SIZE(slimbus_6_rx_mixer_controls)),
15614 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15615 usb_audio_rx_mixer_controls,
15616 ARRAY_SIZE(usb_audio_rx_mixer_controls)),
15617 /* Voice Mixer */
15618 SND_SOC_DAPM_MIXER("PRI_RX_Voice Mixer",
15619 SND_SOC_NOPM, 0, 0, pri_rx_voice_mixer_controls,
15620 ARRAY_SIZE(pri_rx_voice_mixer_controls)),
15621 SND_SOC_DAPM_MIXER("SEC_RX_Voice Mixer",
15622 SND_SOC_NOPM, 0, 0,
15623 sec_i2s_rx_voice_mixer_controls,
15624 ARRAY_SIZE(sec_i2s_rx_voice_mixer_controls)),
15625 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_Voice Mixer",
15626 SND_SOC_NOPM, 0, 0,
15627 sec_mi2s_rx_voice_mixer_controls,
15628 ARRAY_SIZE(sec_mi2s_rx_voice_mixer_controls)),
15629 SND_SOC_DAPM_MIXER("SLIM_0_RX_Voice Mixer",
15630 SND_SOC_NOPM, 0, 0,
15631 slimbus_rx_voice_mixer_controls,
15632 ARRAY_SIZE(slimbus_rx_voice_mixer_controls)),
15633 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX_Voice Mixer",
15634 SND_SOC_NOPM, 0, 0,
15635 bt_sco_rx_voice_mixer_controls,
15636 ARRAY_SIZE(bt_sco_rx_voice_mixer_controls)),
15637 SND_SOC_DAPM_MIXER("AFE_PCM_RX_Voice Mixer",
15638 SND_SOC_NOPM, 0, 0,
15639 afe_pcm_rx_voice_mixer_controls,
15640 ARRAY_SIZE(afe_pcm_rx_voice_mixer_controls)),
15641 SND_SOC_DAPM_MIXER("AUX_PCM_RX_Voice Mixer",
15642 SND_SOC_NOPM, 0, 0,
15643 aux_pcm_rx_voice_mixer_controls,
15644 ARRAY_SIZE(aux_pcm_rx_voice_mixer_controls)),
15645 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX_Voice Mixer",
15646 SND_SOC_NOPM, 0, 0,
15647 sec_aux_pcm_rx_voice_mixer_controls,
15648 ARRAY_SIZE(sec_aux_pcm_rx_voice_mixer_controls)),
15649 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX_Voice Mixer",
15650 SND_SOC_NOPM, 0, 0,
15651 tert_aux_pcm_rx_voice_mixer_controls,
15652 ARRAY_SIZE(tert_aux_pcm_rx_voice_mixer_controls)),
15653 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX_Voice Mixer",
15654 SND_SOC_NOPM, 0, 0,
15655 quat_aux_pcm_rx_voice_mixer_controls,
15656 ARRAY_SIZE(quat_aux_pcm_rx_voice_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053015657 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX_Voice Mixer",
15658 SND_SOC_NOPM, 0, 0,
15659 quin_aux_pcm_rx_voice_mixer_controls,
15660 ARRAY_SIZE(quin_aux_pcm_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015661 SND_SOC_DAPM_MIXER("HDMI_RX_Voice Mixer",
15662 SND_SOC_NOPM, 0, 0,
15663 hdmi_rx_voice_mixer_controls,
15664 ARRAY_SIZE(hdmi_rx_voice_mixer_controls)),
15665 SND_SOC_DAPM_MIXER("MI2S_RX_Voice Mixer",
15666 SND_SOC_NOPM, 0, 0,
15667 mi2s_rx_voice_mixer_controls,
15668 ARRAY_SIZE(mi2s_rx_voice_mixer_controls)),
15669 SND_SOC_DAPM_MIXER("PRI_MI2S_RX_Voice Mixer",
15670 SND_SOC_NOPM, 0, 0,
15671 pri_mi2s_rx_voice_mixer_controls,
15672 ARRAY_SIZE(pri_mi2s_rx_voice_mixer_controls)),
15673 SND_SOC_DAPM_MIXER("INT0_MI2S_RX_Voice Mixer",
15674 SND_SOC_NOPM, 0, 0,
15675 int0_mi2s_rx_voice_mixer_controls,
15676 ARRAY_SIZE(int0_mi2s_rx_voice_mixer_controls)),
15677 SND_SOC_DAPM_MIXER("INT4_MI2S_RX_Voice Mixer",
15678 SND_SOC_NOPM, 0, 0,
15679 int4_mi2s_rx_voice_mixer_controls,
15680 ARRAY_SIZE(int4_mi2s_rx_voice_mixer_controls)),
15681 SND_SOC_DAPM_MIXER("TERT_MI2S_RX_Voice Mixer",
15682 SND_SOC_NOPM, 0, 0,
15683 tert_mi2s_rx_voice_mixer_controls,
15684 ARRAY_SIZE(tert_mi2s_rx_voice_mixer_controls)),
15685 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX_Voice Mixer",
15686 SND_SOC_NOPM, 0, 0,
15687 quat_mi2s_rx_voice_mixer_controls,
15688 ARRAY_SIZE(quat_mi2s_rx_voice_mixer_controls)),
15689 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX_Voice Mixer",
15690 SND_SOC_NOPM, 0, 0,
15691 quin_mi2s_rx_voice_mixer_controls,
15692 ARRAY_SIZE(quin_mi2s_rx_voice_mixer_controls)),
15693 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2_Voice Mixer",
15694 SND_SOC_NOPM, 0, 0,
15695 quat_tdm_rx_2_voice_mixer_controls,
15696 ARRAY_SIZE(quat_tdm_rx_2_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015697 SND_SOC_DAPM_MIXER("Voip_Tx Mixer",
15698 SND_SOC_NOPM, 0, 0, tx_voip_mixer_controls,
15699 ARRAY_SIZE(tx_voip_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015700 SND_SOC_DAPM_MIXER("VoiceMMode1_Tx Mixer",
15701 SND_SOC_NOPM, 0, 0, tx_voicemmode1_mixer_controls,
15702 ARRAY_SIZE(tx_voicemmode1_mixer_controls)),
15703 SND_SOC_DAPM_MIXER("VoiceMMode2_Tx Mixer",
15704 SND_SOC_NOPM, 0, 0, tx_voicemmode2_mixer_controls,
15705 ARRAY_SIZE(tx_voicemmode2_mixer_controls)),
15706 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15707 int_bt_sco_rx_mixer_controls, ARRAY_SIZE(int_bt_sco_rx_mixer_controls)),
15708 SND_SOC_DAPM_MIXER("INTERNAL_A2DP_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15709 int_bt_a2dp_rx_mixer_controls,
15710 ARRAY_SIZE(int_bt_a2dp_rx_mixer_controls)),
15711 SND_SOC_DAPM_MIXER("INTERNAL_FM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15712 int_fm_rx_mixer_controls, ARRAY_SIZE(int_fm_rx_mixer_controls)),
15713 SND_SOC_DAPM_MIXER("AFE_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
15714 afe_pcm_rx_mixer_controls, ARRAY_SIZE(afe_pcm_rx_mixer_controls)),
15715 SND_SOC_DAPM_MIXER("Voice Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
15716 tx_voice_stub_mixer_controls, ARRAY_SIZE(tx_voice_stub_mixer_controls)),
15717 SND_SOC_DAPM_MIXER("Voice2 Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
15718 tx_voice2_stub_mixer_controls,
15719 ARRAY_SIZE(tx_voice2_stub_mixer_controls)),
15720 SND_SOC_DAPM_MIXER("VoLTE Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
15721 tx_volte_stub_mixer_controls, ARRAY_SIZE(tx_volte_stub_mixer_controls)),
15722 SND_SOC_DAPM_MIXER("STUB_RX Mixer", SND_SOC_NOPM, 0, 0,
15723 stub_rx_mixer_controls, ARRAY_SIZE(stub_rx_mixer_controls)),
15724 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Mixer", SND_SOC_NOPM, 0, 0,
15725 slimbus_1_rx_mixer_controls, ARRAY_SIZE(slimbus_1_rx_mixer_controls)),
15726 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
15727 slimbus_3_rx_mixer_controls, ARRAY_SIZE(slimbus_3_rx_mixer_controls)),
15728 SND_SOC_DAPM_MIXER("SLIM_6_RX_Voice Mixer",
15729 SND_SOC_NOPM, 0, 0,
15730 slimbus_6_rx_voice_mixer_controls,
15731 ARRAY_SIZE(slimbus_6_rx_voice_mixer_controls)),
15732 SND_SOC_DAPM_MIXER("SLIM_7_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
15733 slimbus_7_rx_voice_mixer_controls,
15734 ARRAY_SIZE(slimbus_7_rx_voice_mixer_controls)),
15735 SND_SOC_DAPM_MIXER("SLIM_8_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
15736 slimbus_8_rx_voice_mixer_controls,
15737 ARRAY_SIZE(slimbus_8_rx_voice_mixer_controls)),
15738 /* port mixer */
15739 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Port Mixer",
15740 SND_SOC_NOPM, 0, 0, sbus_0_rx_port_mixer_controls,
15741 ARRAY_SIZE(sbus_0_rx_port_mixer_controls)),
15742 SND_SOC_DAPM_MIXER("AUX_PCM_RX Port Mixer",
15743 SND_SOC_NOPM, 0, 0, aux_pcm_rx_port_mixer_controls,
15744 ARRAY_SIZE(aux_pcm_rx_port_mixer_controls)),
15745 SND_SOC_DAPM_MIXER("SEC_AUXPCM_RX Port Mixer",
15746 SND_SOC_NOPM, 0, 0, sec_auxpcm_rx_port_mixer_controls,
15747 ARRAY_SIZE(sec_auxpcm_rx_port_mixer_controls)),
15748 SND_SOC_DAPM_MIXER("TERT_AUXPCM_RX Port Mixer",
15749 SND_SOC_NOPM, 0, 0, tert_auxpcm_rx_port_mixer_controls,
15750 ARRAY_SIZE(tert_auxpcm_rx_port_mixer_controls)),
15751 SND_SOC_DAPM_MIXER("QUAT_AUXPCM_RX Port Mixer",
15752 SND_SOC_NOPM, 0, 0, quat_auxpcm_rx_port_mixer_controls,
15753 ARRAY_SIZE(quat_auxpcm_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053015754 SND_SOC_DAPM_MIXER("QUIN_AUXPCM_RX Port Mixer",
15755 SND_SOC_NOPM, 0, 0, quin_auxpcm_rx_port_mixer_controls,
15756 ARRAY_SIZE(quin_auxpcm_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015757 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Port Mixer", SND_SOC_NOPM, 0, 0,
15758 sbus_1_rx_port_mixer_controls,
15759 ARRAY_SIZE(sbus_1_rx_port_mixer_controls)),
15760 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Port Mixer", SND_SOC_NOPM, 0, 0,
15761 bt_sco_rx_port_mixer_controls,
15762 ARRAY_SIZE(bt_sco_rx_port_mixer_controls)),
15763 SND_SOC_DAPM_MIXER("AFE_PCM_RX Port Mixer",
15764 SND_SOC_NOPM, 0, 0, afe_pcm_rx_port_mixer_controls,
15765 ARRAY_SIZE(afe_pcm_rx_port_mixer_controls)),
15766 SND_SOC_DAPM_MIXER("HDMI_RX Port Mixer",
15767 SND_SOC_NOPM, 0, 0, hdmi_rx_port_mixer_controls,
15768 ARRAY_SIZE(hdmi_rx_port_mixer_controls)),
15769 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX Port Mixer",
15770 SND_SOC_NOPM, 0, 0, display_port_rx_port_mixer_controls,
15771 ARRAY_SIZE(display_port_rx_port_mixer_controls)),
15772 SND_SOC_DAPM_MIXER("SEC_I2S_RX Port Mixer",
15773 SND_SOC_NOPM, 0, 0, sec_i2s_rx_port_mixer_controls,
15774 ARRAY_SIZE(sec_i2s_rx_port_mixer_controls)),
15775 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX Port Mixer",
15776 SND_SOC_NOPM, 0, 0, sbus_3_rx_port_mixer_controls,
15777 ARRAY_SIZE(sbus_3_rx_port_mixer_controls)),
15778 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Port Mixer",
15779 SND_SOC_NOPM, 0, 0, sbus_6_rx_port_mixer_controls,
15780 ARRAY_SIZE(sbus_6_rx_port_mixer_controls)),
15781 SND_SOC_DAPM_MIXER("MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
15782 mi2s_rx_port_mixer_controls, ARRAY_SIZE(mi2s_rx_port_mixer_controls)),
15783 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
15784 primary_mi2s_rx_port_mixer_controls,
15785 ARRAY_SIZE(primary_mi2s_rx_port_mixer_controls)),
15786 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
15787 sec_mi2s_rx_port_mixer_controls,
15788 ARRAY_SIZE(sec_mi2s_rx_port_mixer_controls)),
15789 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
15790 tert_mi2s_rx_port_mixer_controls,
15791 ARRAY_SIZE(tert_mi2s_rx_port_mixer_controls)),
15792 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
15793 quat_mi2s_rx_port_mixer_controls,
15794 ARRAY_SIZE(quat_mi2s_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053015795 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
15796 quin_mi2s_rx_port_mixer_controls,
15797 ARRAY_SIZE(quin_mi2s_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015798 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
15799 pri_tdm_rx_0_port_mixer_controls,
15800 ARRAY_SIZE(pri_tdm_rx_0_port_mixer_controls)),
15801 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
15802 pri_tdm_rx_1_port_mixer_controls,
15803 ARRAY_SIZE(pri_tdm_rx_1_port_mixer_controls)),
15804 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
15805 pri_tdm_rx_2_port_mixer_controls,
15806 ARRAY_SIZE(pri_tdm_rx_2_port_mixer_controls)),
15807 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
15808 pri_tdm_rx_3_port_mixer_controls,
15809 ARRAY_SIZE(pri_tdm_rx_3_port_mixer_controls)),
15810 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
15811 sec_tdm_rx_0_port_mixer_controls,
15812 ARRAY_SIZE(sec_tdm_rx_0_port_mixer_controls)),
15813 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
15814 sec_tdm_rx_1_port_mixer_controls,
15815 ARRAY_SIZE(sec_tdm_rx_1_port_mixer_controls)),
15816 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
15817 sec_tdm_rx_2_port_mixer_controls,
15818 ARRAY_SIZE(sec_tdm_rx_2_port_mixer_controls)),
15819 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
15820 sec_tdm_rx_3_port_mixer_controls,
15821 ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)),
15822 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
15823 tert_tdm_rx_0_port_mixer_controls,
15824 ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)),
15825 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
15826 tert_tdm_rx_1_port_mixer_controls,
15827 ARRAY_SIZE(tert_tdm_rx_1_port_mixer_controls)),
15828 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
15829 tert_tdm_rx_2_port_mixer_controls,
15830 ARRAY_SIZE(tert_tdm_rx_2_port_mixer_controls)),
15831 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
15832 tert_tdm_rx_3_port_mixer_controls,
15833 ARRAY_SIZE(tert_tdm_rx_3_port_mixer_controls)),
15834 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
15835 quat_tdm_rx_0_port_mixer_controls,
15836 ARRAY_SIZE(quat_tdm_rx_0_port_mixer_controls)),
15837 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
15838 quat_tdm_rx_1_port_mixer_controls,
15839 ARRAY_SIZE(quat_tdm_rx_1_port_mixer_controls)),
15840 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
15841 quat_tdm_rx_2_port_mixer_controls,
15842 ARRAY_SIZE(quat_tdm_rx_2_port_mixer_controls)),
15843 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
15844 quat_tdm_rx_3_port_mixer_controls,
15845 ARRAY_SIZE(quat_tdm_rx_3_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053015846 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
15847 quin_tdm_rx_0_port_mixer_controls,
15848 ARRAY_SIZE(quin_tdm_rx_0_port_mixer_controls)),
15849 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
15850 quin_tdm_rx_1_port_mixer_controls,
15851 ARRAY_SIZE(quin_tdm_rx_1_port_mixer_controls)),
15852 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
15853 quin_tdm_rx_2_port_mixer_controls,
15854 ARRAY_SIZE(quin_tdm_rx_2_port_mixer_controls)),
15855 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
15856 quin_tdm_rx_3_port_mixer_controls,
15857 ARRAY_SIZE(quin_tdm_rx_3_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015858 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
15859 int0_mi2s_rx_port_mixer_controls,
15860 ARRAY_SIZE(int0_mi2s_rx_port_mixer_controls)),
15861 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
15862 int4_mi2s_rx_port_mixer_controls,
15863 ARRAY_SIZE(int4_mi2s_rx_port_mixer_controls)),
15864 SND_SOC_DAPM_MIXER("QCHAT_Tx Mixer",
15865 SND_SOC_NOPM, 0, 0, tx_qchat_mixer_controls,
15866 ARRAY_SIZE(tx_qchat_mixer_controls)),
15867 SND_SOC_DAPM_MIXER("USB_AUDIO_RX_Voice Mixer",
15868 SND_SOC_NOPM, 0, 0, usb_audio_rx_voice_mixer_controls,
15869 ARRAY_SIZE(usb_audio_rx_voice_mixer_controls)),
15870 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Port Mixer",
15871 SND_SOC_NOPM, 0, 0, usb_rx_port_mixer_controls,
15872 ARRAY_SIZE(usb_rx_port_mixer_controls)),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080015873 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX_Voice Mixer",
15874 SND_SOC_NOPM, 0, 0, display_port_rx_voice_mixer_controls,
15875 ARRAY_SIZE(display_port_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015876 /* lsm mixer definitions */
15877 SND_SOC_DAPM_MIXER("LSM1 Mixer", SND_SOC_NOPM, 0, 0,
15878 lsm1_mixer_controls, ARRAY_SIZE(lsm1_mixer_controls)),
15879 SND_SOC_DAPM_MIXER("LSM2 Mixer", SND_SOC_NOPM, 0, 0,
15880 lsm2_mixer_controls, ARRAY_SIZE(lsm2_mixer_controls)),
15881 SND_SOC_DAPM_MIXER("LSM3 Mixer", SND_SOC_NOPM, 0, 0,
15882 lsm3_mixer_controls, ARRAY_SIZE(lsm3_mixer_controls)),
15883 SND_SOC_DAPM_MIXER("LSM4 Mixer", SND_SOC_NOPM, 0, 0,
15884 lsm4_mixer_controls, ARRAY_SIZE(lsm4_mixer_controls)),
15885 SND_SOC_DAPM_MIXER("LSM5 Mixer", SND_SOC_NOPM, 0, 0,
15886 lsm5_mixer_controls, ARRAY_SIZE(lsm5_mixer_controls)),
15887 SND_SOC_DAPM_MIXER("LSM6 Mixer", SND_SOC_NOPM, 0, 0,
15888 lsm6_mixer_controls, ARRAY_SIZE(lsm6_mixer_controls)),
15889 SND_SOC_DAPM_MIXER("LSM7 Mixer", SND_SOC_NOPM, 0, 0,
15890 lsm7_mixer_controls, ARRAY_SIZE(lsm7_mixer_controls)),
15891 SND_SOC_DAPM_MIXER("LSM8 Mixer", SND_SOC_NOPM, 0, 0,
15892 lsm8_mixer_controls, ARRAY_SIZE(lsm8_mixer_controls)),
15893 /* Virtual Pins to force backends ON atm */
15894 SND_SOC_DAPM_OUTPUT("BE_OUT"),
15895 SND_SOC_DAPM_INPUT("BE_IN"),
15896
15897 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_LCH_MUX", SND_SOC_NOPM, 0, 0,
15898 &slim0_rx_vi_fb_lch_mux),
15899 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_RCH_MUX", SND_SOC_NOPM, 0, 0,
15900 &slim0_rx_vi_fb_rch_mux),
15901 SND_SOC_DAPM_MUX("PRI_MI2S_RX_VI_FB_MUX", SND_SOC_NOPM, 0, 0,
15902 &mi2s_rx_vi_fb_mux),
15903 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_MONO_CH_MUX", SND_SOC_NOPM, 0, 0,
15904 &int4_mi2s_rx_vi_fb_mono_ch_mux),
15905 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", SND_SOC_NOPM, 0, 0,
15906 &int4_mi2s_rx_vi_fb_stereo_ch_mux),
15907
15908 SND_SOC_DAPM_MUX("VOC_EXT_EC MUX", SND_SOC_NOPM, 0, 0,
15909 &voc_ext_ec_mux),
15910 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL1 MUX", SND_SOC_NOPM, 0, 0,
15911 &ext_ec_ref_mux_ul1),
15912 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL2 MUX", SND_SOC_NOPM, 0, 0,
15913 &ext_ec_ref_mux_ul2),
15914 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL3 MUX", SND_SOC_NOPM, 0, 0,
15915 &ext_ec_ref_mux_ul3),
15916 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL4 MUX", SND_SOC_NOPM, 0, 0,
15917 &ext_ec_ref_mux_ul4),
15918 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL5 MUX", SND_SOC_NOPM, 0, 0,
15919 &ext_ec_ref_mux_ul5),
15920 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL6 MUX", SND_SOC_NOPM, 0, 0,
15921 &ext_ec_ref_mux_ul6),
15922 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL8 MUX", SND_SOC_NOPM, 0, 0,
15923 &ext_ec_ref_mux_ul8),
15924 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL9 MUX", SND_SOC_NOPM, 0, 0,
15925 &ext_ec_ref_mux_ul9),
Laxminath Kasam38070be2017-08-17 18:21:59 +053015926 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL10 MUX", SND_SOC_NOPM, 0, 0,
15927 &ext_ec_ref_mux_ul10),
Asish Bhattacharya34504582017-08-08 12:55:01 +053015928 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL16 MUX", SND_SOC_NOPM, 0, 0,
15929 &ext_ec_ref_mux_ul16),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015930 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL17 MUX", SND_SOC_NOPM, 0, 0,
15931 &ext_ec_ref_mux_ul17),
15932 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL18 MUX", SND_SOC_NOPM, 0, 0,
15933 &ext_ec_ref_mux_ul18),
15934 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL19 MUX", SND_SOC_NOPM, 0, 0,
15935 &ext_ec_ref_mux_ul19),
15936};
15937
15938static const struct snd_soc_dapm_route intercon[] = {
15939 {"PRI_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15940 {"PRI_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15941 {"PRI_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15942 {"PRI_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15943 {"PRI_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15944 {"PRI_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15945 {"PRI_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15946 {"PRI_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15947 {"PRI_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15948 {"PRI_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15949 {"PRI_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15950 {"PRI_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15951 {"PRI_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15952 {"PRI_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15953 {"PRI_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15954 {"PRI_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15955 {"PRI_I2S_RX", NULL, "PRI_RX Audio Mixer"},
15956
15957 {"SEC_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15958 {"SEC_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15959 {"SEC_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15960 {"SEC_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15961 {"SEC_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15962 {"SEC_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15963 {"SEC_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15964 {"SEC_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15965 {"SEC_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15966 {"SEC_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15967 {"SEC_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15968 {"SEC_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15969 {"SEC_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15970 {"SEC_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15971 {"SEC_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15972 {"SEC_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15973 {"SEC_I2S_RX", NULL, "SEC_RX Audio Mixer"},
15974
15975 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15976 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15977 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15978 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15979 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15980 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15981 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15982 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15983 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15984 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15985 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15986 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15987 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15988 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15989 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15990 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15991 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Audio Mixer"},
15992
15993 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15994 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15995 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15996 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15997 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15998 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15999 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
16000 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
16001 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
16002 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
16003 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
16004 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
16005 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
16006 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
16007 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
16008 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
16009 {"SLIMBUS_2_RX", NULL, "SLIMBUS_2_RX Audio Mixer"},
16010
16011 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
16012 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
16013 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
16014 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
16015 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
16016 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
16017 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
16018 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
16019 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
16020 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
16021 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
16022 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
16023 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
16024 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
16025 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
16026 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
16027 {"SLIMBUS_5_RX", NULL, "SLIMBUS_5_RX Audio Mixer"},
16028
16029 {"HDMI Mixer", "MultiMedia1", "MM_DL1"},
16030 {"HDMI Mixer", "MultiMedia2", "MM_DL2"},
16031 {"HDMI Mixer", "MultiMedia3", "MM_DL3"},
16032 {"HDMI Mixer", "MultiMedia4", "MM_DL4"},
16033 {"HDMI Mixer", "MultiMedia5", "MM_DL5"},
16034 {"HDMI Mixer", "MultiMedia6", "MM_DL6"},
16035 {"HDMI Mixer", "MultiMedia7", "MM_DL7"},
16036 {"HDMI Mixer", "MultiMedia8", "MM_DL8"},
16037 {"HDMI Mixer", "MultiMedia9", "MM_DL9"},
16038 {"HDMI Mixer", "MultiMedia10", "MM_DL10"},
16039 {"HDMI Mixer", "MultiMedia11", "MM_DL11"},
16040 {"HDMI Mixer", "MultiMedia12", "MM_DL12"},
16041 {"HDMI Mixer", "MultiMedia13", "MM_DL13"},
16042 {"HDMI Mixer", "MultiMedia14", "MM_DL14"},
16043 {"HDMI Mixer", "MultiMedia15", "MM_DL15"},
16044 {"HDMI Mixer", "MultiMedia16", "MM_DL16"},
16045 {"HDMI", NULL, "HDMI Mixer"},
16046
16047 {"DISPLAY_PORT Mixer", "MultiMedia1", "MM_DL1"},
16048 {"DISPLAY_PORT Mixer", "MultiMedia2", "MM_DL2"},
16049 {"DISPLAY_PORT Mixer", "MultiMedia3", "MM_DL3"},
16050 {"DISPLAY_PORT Mixer", "MultiMedia4", "MM_DL4"},
16051 {"DISPLAY_PORT Mixer", "MultiMedia5", "MM_DL5"},
16052 {"DISPLAY_PORT Mixer", "MultiMedia6", "MM_DL6"},
16053 {"DISPLAY_PORT Mixer", "MultiMedia7", "MM_DL7"},
16054 {"DISPLAY_PORT Mixer", "MultiMedia8", "MM_DL8"},
16055 {"DISPLAY_PORT Mixer", "MultiMedia9", "MM_DL9"},
16056 {"DISPLAY_PORT Mixer", "MultiMedia10", "MM_DL10"},
16057 {"DISPLAY_PORT Mixer", "MultiMedia11", "MM_DL11"},
16058 {"DISPLAY_PORT Mixer", "MultiMedia12", "MM_DL12"},
16059 {"DISPLAY_PORT Mixer", "MultiMedia13", "MM_DL13"},
16060 {"DISPLAY_PORT Mixer", "MultiMedia14", "MM_DL14"},
16061 {"DISPLAY_PORT Mixer", "MultiMedia15", "MM_DL15"},
16062 {"DISPLAY_PORT Mixer", "MultiMedia16", "MM_DL16"},
16063 {"DISPLAY_PORT", NULL, "DISPLAY_PORT Mixer"},
16064
16065 {"SPDIF_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
16066 {"SPDIF_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
16067 {"SPDIF_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
16068 {"SPDIF_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
16069 {"SPDIF_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
16070 {"SPDIF_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
16071 {"SPDIF_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
16072 {"SPDIF_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
16073 {"SPDIF_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
16074 {"SPDIF_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
16075 {"SPDIF_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
16076 {"SPDIF_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
16077 {"SPDIF_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
16078 {"SPDIF_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
16079 {"SPDIF_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
16080 {"SPDIF_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
16081 {"SPDIF_RX", NULL, "SPDIF_RX Audio Mixer"},
16082
16083 /* incall */
16084 {"Incall_Music Audio Mixer", "MultiMedia1", "MM_DL1"},
16085 {"Incall_Music Audio Mixer", "MultiMedia2", "MM_DL2"},
16086 {"Incall_Music Audio Mixer", "MultiMedia5", "MM_DL5"},
16087 {"Incall_Music Audio Mixer", "MultiMedia9", "MM_DL9"},
16088 {"VOICE_PLAYBACK_TX", NULL, "Incall_Music Audio Mixer"},
16089 {"Incall_Music_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
16090 {"Incall_Music_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
16091 {"Incall_Music_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
16092 {"Incall_Music_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
16093 {"VOICE2_PLAYBACK_TX", NULL, "Incall_Music_2 Audio Mixer"},
16094 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
16095 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
16096 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
16097 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
16098 {"SLIMBUS_4_RX", NULL, "SLIMBUS_4_RX Audio Mixer"},
16099
16100 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
16101 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
16102 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
16103 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
16104 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
16105 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
16106 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
16107 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
16108 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
16109 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
16110 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
16111 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
16112 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
16113 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
16114 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
16115 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
16116 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Audio Mixer"},
16117
16118 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
16119 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
16120 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
16121 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
16122 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
16123 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
16124 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
16125 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
16126 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
16127 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
16128 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
16129 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
16130 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
16131 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
16132 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
16133 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
16134 {"SLIMBUS_7_RX", NULL, "SLIMBUS_7_RX Audio Mixer"},
16135
16136 {"USB_AUDIO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
16137 {"USB_AUDIO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
16138 {"USB_AUDIO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
16139 {"USB_AUDIO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
16140 {"USB_AUDIO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
16141 {"USB_AUDIO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
16142 {"USB_AUDIO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
16143 {"USB_AUDIO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
16144 {"USB_AUDIO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
16145 {"USB_AUDIO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
16146 {"USB_AUDIO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
16147 {"USB_AUDIO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
16148 {"USB_AUDIO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
16149 {"USB_AUDIO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
16150 {"USB_AUDIO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
16151 {"USB_AUDIO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
16152 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Audio Mixer"},
16153
16154 {"MultiMedia1 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
16155 {"MultiMedia4 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
16156 {"MultiMedia8 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
16157 {"MultiMedia1 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
16158 {"MultiMedia4 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
16159 {"MultiMedia8 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
16160 {"MultiMedia1 Mixer", "SLIM_4_TX", "SLIMBUS_4_TX"},
16161 {"MultiMedia1 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
16162 {"MultiMedia1 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16163 {"MultiMedia1 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16164 {"MultiMedia8 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
16165 {"MultiMedia8 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16166 {"MultiMedia4 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16167 {"MultiMedia17 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16168 {"MultiMedia18 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16169 {"MultiMedia19 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +053016170 {"MultiMedia28 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16171 {"MultiMedia29 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016172 {"MultiMedia8 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16173 {"MultiMedia2 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16174 {"MultiMedia4 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16175 {"MultiMedia17 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16176 {"MultiMedia18 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16177 {"MultiMedia19 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +053016178 {"MultiMedia28 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16179 {"MultiMedia29 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016180 {"MultiMedia8 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +053016181 {"MultiMedia17 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16182 {"MultiMedia18 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16183 {"MultiMedia19 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16184 {"MultiMedia28 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16185 {"MultiMedia29 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16186 {"MultiMedia17 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016187 {"MultiMedia18 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +053016188 {"MultiMedia19 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16189 {"MultiMedia28 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16190 {"MultiMedia29 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016191 {"MultiMedia8 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16192 {"MultiMedia3 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16193 {"MultiMedia5 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053016194 {"MultiMedia10 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053016195 {"MultiMedia16 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016196 {"MultiMedia5 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16197 {"MultiMedia5 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053016198 {"MultiMedia10 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016199 {"MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
16200 {"MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
16201 {"MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
16202 {"MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
16203 {"MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
16204 {"MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
16205 {"MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
16206 {"MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
16207 {"MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
16208 {"MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
16209 {"MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
16210 {"MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
16211 {"MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
16212 {"MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
16213 {"MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
16214 {"MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
16215 {"MI2S_RX", NULL, "MI2S_RX Audio Mixer"},
16216
16217 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
16218 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
16219 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
16220 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
16221 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
16222 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
16223 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
16224 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
16225 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
16226 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
16227 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
16228 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
16229 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
16230 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
16231 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
16232 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Audio Mixer"},
16233
16234 {"TERT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
16235 {"TERT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
16236 {"TERT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
16237 {"TERT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
16238 {"TERT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
16239 {"TERT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
16240 {"TERT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
16241 {"TERT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
16242 {"TERT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
16243 {"TERT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
16244 {"TERT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
16245 {"TERT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
16246 {"TERT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
16247 {"TERT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
16248 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Audio Mixer"},
16249
16250 {"SEC_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
16251 {"SEC_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
16252 {"SEC_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
16253 {"SEC_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
16254 {"SEC_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
16255 {"SEC_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
16256 {"SEC_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
16257 {"SEC_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
16258 {"SEC_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
16259 {"SEC_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
16260 {"SEC_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
16261 {"SEC_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
16262 {"SEC_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
16263 {"SEC_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
16264 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Audio Mixer"},
16265
16266 {"SEC_MI2S_RX_SD1 Audio Mixer", "MultiMedia6", "MM_DL6"},
16267 {"SEC_MI2S_RX_SD1", NULL, "SEC_MI2S_RX_SD1 Audio Mixer"},
16268
16269 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16270 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16271
16272 {"PRI_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
16273 {"PRI_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
16274 {"PRI_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
16275 {"PRI_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
16276 {"PRI_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
16277 {"PRI_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
16278 {"PRI_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
16279 {"PRI_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
16280 {"PRI_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
16281 {"PRI_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
16282 {"PRI_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
16283 {"PRI_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
16284 {"PRI_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
16285 {"PRI_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
16286 {"PRI_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
16287 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Audio Mixer"},
16288
16289 {"INT0_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
16290 {"INT0_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
16291 {"INT0_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
16292 {"INT0_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
16293 {"INT0_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
16294 {"INT0_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
16295 {"INT0_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
16296 {"INT0_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
16297 {"INT0_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
16298 {"INT0_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
16299 {"INT0_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
16300 {"INT0_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
16301 {"INT0_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
16302 {"INT0_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
16303 {"INT0_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
16304 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Audio Mixer"},
16305
16306 {"INT4_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
16307 {"INT4_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
16308 {"INT4_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
16309 {"INT4_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
16310 {"INT4_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
16311 {"INT4_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
16312 {"INT4_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
16313 {"INT4_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
16314 {"INT4_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
16315 {"INT4_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
16316 {"INT4_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
16317 {"INT4_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
16318 {"INT4_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
16319 {"INT4_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
16320 {"INT4_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
16321 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Audio Mixer"},
16322
16323 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
16324 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
16325 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
16326 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
16327 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
16328 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
16329 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
16330 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
16331 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
16332 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
16333 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
16334 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
16335 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
16336 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
16337 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
16338 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
16339 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
16340 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Audio Mixer"},
16341
16342 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
16343 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
16344 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
16345 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
16346 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
16347 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
16348 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
16349 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
16350 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
16351 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
16352 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
16353 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
16354 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
16355 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
16356 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
16357 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
16358 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Audio Mixer"},
16359
16360 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
16361 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
16362 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
16363 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
16364 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
16365 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
16366 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
16367 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
16368 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
16369 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
16370 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
16371 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
16372 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
16373 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
16374 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
16375 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
16376 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Audio Mixer"},
16377
16378 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
16379 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
16380 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
16381 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
16382 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
16383 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
16384 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
16385 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
16386 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
16387 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
16388 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
16389 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
16390 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
16391 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
16392 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
16393 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
16394 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Audio Mixer"},
16395
16396 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
16397 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
16398 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
16399 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
16400 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
16401 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
16402 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
16403 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
16404 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
16405 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
16406 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
16407 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
16408 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
16409 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
16410 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
16411 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
16412 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Audio Mixer"},
16413
16414 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
16415 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
16416 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
16417 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
16418 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
16419 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
16420 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
16421 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
16422 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
16423 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
16424 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
16425 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
16426 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
16427 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
16428 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
16429 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
16430 {"PRI_TDM_TX_0", NULL, "PRI_TDM_TX_0 Audio Mixer"},
16431
16432 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
16433 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
16434 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
16435 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
16436 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
16437 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
16438 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
16439 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
16440 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
16441 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
16442 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
16443 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
16444 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
16445 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
16446 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
16447 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
16448 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Audio Mixer"},
16449
16450 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
16451 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
16452 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
16453 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
16454 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
16455 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
16456 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
16457 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
16458 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
16459 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
16460 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
16461 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
16462 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
16463 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
16464 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
16465 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
16466 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Audio Mixer"},
16467
16468 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
16469 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
16470 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
16471 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
16472 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
16473 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
16474 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
16475 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
16476 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
16477 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
16478 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
16479 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
16480 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
16481 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
16482 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
16483 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
16484 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Audio Mixer"},
16485
16486 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
16487 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
16488 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
16489 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
16490 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
16491 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
16492 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
16493 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
16494 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
16495 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
16496 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
16497 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
16498 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
16499 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
16500 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
16501 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
16502 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Audio Mixer"},
16503
16504 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
16505 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
16506 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
16507 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
16508 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
16509 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
16510 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
16511 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
16512 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
16513 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
16514 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
16515 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
16516 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
16517 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
16518 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
16519 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
16520 {"SEC_TDM_TX_0", NULL, "SEC_TDM_TX_0 Audio Mixer"},
16521
16522 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
16523 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
16524 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
16525 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
16526 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
16527 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
16528 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
16529 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
16530 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
16531 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
16532 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
16533 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
16534 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
16535 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
16536 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
16537 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
16538 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Audio Mixer"},
16539
16540 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
16541 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
16542 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
16543 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
16544 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
16545 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
16546 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
16547 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
16548 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
16549 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
16550 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
16551 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
16552 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
16553 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
16554 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
16555 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
16556 {"TERT_TDM_TX_0", NULL, "TERT_TDM_TX_0 Audio Mixer"},
16557
16558 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
16559 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
16560 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
16561 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
16562 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
16563 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
16564 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
16565 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
16566 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
16567 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
16568 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
16569 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
16570 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
16571 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
16572 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
16573 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
16574 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Audio Mixer"},
16575
16576 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
16577 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
16578 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
16579 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
16580 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
16581 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
16582 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
16583 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
16584 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
16585 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
16586 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
16587 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
16588 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
16589 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
16590 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
16591 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
16592 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Audio Mixer"},
16593
16594 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
16595 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
16596 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
16597 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
16598 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
16599 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
16600 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
16601 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
16602 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
16603 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
16604 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
16605 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
16606 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
16607 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
16608 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
16609 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
16610 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Audio Mixer"},
16611
16612 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia1", "MM_DL1"},
16613 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia2", "MM_DL2"},
16614 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia3", "MM_DL3"},
16615 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia4", "MM_DL4"},
16616 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia5", "MM_DL5"},
16617 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia6", "MM_DL6"},
16618 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia7", "MM_DL7"},
16619 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia8", "MM_DL8"},
16620 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia9", "MM_DL9"},
16621 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia10", "MM_DL10"},
16622 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia11", "MM_DL11"},
16623 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia12", "MM_DL12"},
16624 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia13", "MM_DL13"},
16625 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia14", "MM_DL14"},
16626 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia15", "MM_DL15"},
16627 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia16", "MM_DL16"},
16628 {"TERT_TDM_RX_4", NULL, "TERT_TDM_RX_4 Audio Mixer"},
16629
16630 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
16631 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
16632 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
16633 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
16634 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
16635 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
16636 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
16637 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
16638 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
16639 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
16640 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
16641 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
16642 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
16643 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
16644 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
16645 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
16646 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
16647 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Audio Mixer"},
16648
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016649 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
16650 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
16651 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
16652 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
16653 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
16654 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
16655 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
16656 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
16657 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
16658 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
16659 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
16660 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
16661 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
16662 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
16663 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
16664 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
16665 {"QUAT_TDM_TX_0", NULL, "QUAT_TDM_TX_0 Audio Mixer"},
16666
16667 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
16668 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
16669 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
16670 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
16671 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
16672 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
16673 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
16674 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
16675 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
16676 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
16677 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
16678 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
16679 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
16680 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
16681 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
16682 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
16683 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
16684 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Audio Mixer"},
16685
16686 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
16687 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
16688 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
16689 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
16690 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
16691 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
16692 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
16693 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
16694 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
16695 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
16696 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
16697 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
16698 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
16699 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
16700 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
16701 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
16702 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
16703 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Audio Mixer"},
16704
16705 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
16706 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
16707 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
16708 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
16709 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
16710 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
16711 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
16712 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
16713 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
16714 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
16715 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
16716 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
16717 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
16718 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
16719 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
16720 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
16721 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
16722 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Audio Mixer"},
16723
Rohit Kumara5077932017-09-10 22:05:05 +053016724 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
16725 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
16726 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
16727 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
16728 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
16729 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
16730 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
16731 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
16732 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
16733 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
16734 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
16735 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
16736 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
16737 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
16738 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
16739 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
16740 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
16741 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Audio Mixer"},
16742
16743 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
16744 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
16745 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
16746 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
16747 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
16748 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
16749 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
16750 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
16751 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
16752 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
16753 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
16754 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
16755 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
16756 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
16757 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
16758 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
16759 {"QUIN_TDM_TX_0", NULL, "QUIN_TDM_TX_0 Audio Mixer"},
16760
16761 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
16762 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
16763 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
16764 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
16765 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
16766 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
16767 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
16768 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
16769 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
16770 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
16771 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
16772 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
16773 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
16774 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
16775 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
16776 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
16777 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
16778 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Audio Mixer"},
16779
16780 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
16781 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
16782 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
16783 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
16784 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
16785 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
16786 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
16787 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
16788 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
16789 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
16790 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
16791 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
16792 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
16793 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
16794 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
16795 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
16796 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
16797 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Audio Mixer"},
16798
16799 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
16800 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
16801 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
16802 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
16803 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
16804 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
16805 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
16806 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
16807 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
16808 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
16809 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
16810 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
16811 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
16812 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
16813 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
16814 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
16815 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
16816 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Audio Mixer"},
16817
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016818 {"MultiMedia1 Mixer", "PRI_TX", "PRI_I2S_TX"},
16819 {"MultiMedia1 Mixer", "MI2S_TX", "MI2S_TX"},
16820 {"MultiMedia2 Mixer", "MI2S_TX", "MI2S_TX"},
16821 {"MultiMedia3 Mixer", "MI2S_TX", "MI2S_TX"},
16822 {"MultiMedia5 Mixer", "MI2S_TX", "MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053016823 {"MultiMedia10 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053016824 {"MultiMedia16 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016825 {"MultiMedia1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16826 {"MultiMedia2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16827 {"MultiMedia6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16828 {"MultiMedia1 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
16829 {"MultiMedia2 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
16830 {"MultiMedia1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16831 {"MultiMedia2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16832 {"MultiMedia1 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
16833 {"MultiMedia2 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
16834 {"MultiMedia1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16835 {"MultiMedia2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16836 {"MultiMedia1 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16837 {"MultiMedia1 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16838 {"MultiMedia3 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
16839 {"MultiMedia5 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053016840 {"MultiMedia10 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016841 {"MultiMedia1 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16842 {"MultiMedia3 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
16843 {"MultiMedia5 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053016844 {"MultiMedia10 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053016845 {"MultiMedia16 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
16846 {"MultiMedia16 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016847 {"MultiMedia1 Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16848 {"MultiMedia3 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
16849 {"MultiMedia5 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053016850 {"MultiMedia10 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016851 {"MultiMedia1 Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
16852 {"MultiMedia3 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
16853 {"MultiMedia5 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053016854 {"MultiMedia10 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053016855 {"MultiMedia16 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016856 {"MultiMedia1 Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
16857 {"MultiMedia3 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
16858 {"MultiMedia5 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016859 {"MultiMedia2 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16860 {"MultiMedia2 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
16861 {"MultiMedia2 Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16862 {"MultiMedia2 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16863 {"MultiMedia1 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16864 {"MultiMedia1 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16865 {"MultiMedia2 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16866 {"MultiMedia6 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16867 {"MultiMedia6 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16868 {"MultiMedia3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16869 {"MultiMedia5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053016870 {"MultiMedia10 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016871 {"MultiMedia6 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
16872 {"MultiMedia3 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
16873 {"MultiMedia5 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053016874 {"MultiMedia10 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053016875 {"MultiMedia16 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016876 {"MultiMedia6 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16877 {"MultiMedia3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16878 {"MultiMedia5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053016879 {"MultiMedia10 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053016880 {"MultiMedia16 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +053016881 {"MultiMedia17 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16882 {"MultiMedia18 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16883 {"MultiMedia19 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16884 {"MultiMedia28 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16885 {"MultiMedia29 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016886 {"MultiMedia6 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16887 {"MultiMedia6 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16888 {"MultiMedia6 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16889 {"MultiMedia6 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016890 {"MultiMedia6 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016891
16892 {"MultiMedia1 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16893 {"MultiMedia1 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16894 {"MultiMedia1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16895 {"MultiMedia1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16896 {"MultiMedia1 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16897 {"MultiMedia1 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16898 {"MultiMedia1 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16899 {"MultiMedia1 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16900 {"MultiMedia1 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16901 {"MultiMedia1 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16902 {"MultiMedia1 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16903 {"MultiMedia1 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16904 {"MultiMedia1 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16905 {"MultiMedia1 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16906 {"MultiMedia1 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16907 {"MultiMedia1 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016908 {"MultiMedia1 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16909 {"MultiMedia1 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16910 {"MultiMedia1 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16911 {"MultiMedia1 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016912
16913 {"MultiMedia2 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16914 {"MultiMedia2 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16915 {"MultiMedia2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16916 {"MultiMedia2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16917 {"MultiMedia2 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16918 {"MultiMedia2 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16919 {"MultiMedia2 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16920 {"MultiMedia2 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16921 {"MultiMedia2 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16922 {"MultiMedia2 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16923 {"MultiMedia2 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16924 {"MultiMedia2 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16925 {"MultiMedia2 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16926 {"MultiMedia2 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16927 {"MultiMedia2 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16928 {"MultiMedia2 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016929 {"MultiMedia2 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16930 {"MultiMedia2 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16931 {"MultiMedia2 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16932 {"MultiMedia2 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016933
16934 {"MultiMedia3 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16935 {"MultiMedia3 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16936 {"MultiMedia3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16937 {"MultiMedia3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16938 {"MultiMedia3 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16939 {"MultiMedia3 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16940 {"MultiMedia3 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16941 {"MultiMedia3 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16942 {"MultiMedia3 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16943 {"MultiMedia3 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16944 {"MultiMedia3 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16945 {"MultiMedia3 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16946 {"MultiMedia3 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16947 {"MultiMedia3 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16948 {"MultiMedia3 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16949 {"MultiMedia3 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016950 {"MultiMedia3 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16951 {"MultiMedia3 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16952 {"MultiMedia3 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16953 {"MultiMedia3 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016954
16955 {"MultiMedia4 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16956 {"MultiMedia4 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16957 {"MultiMedia4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16958 {"MultiMedia4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16959 {"MultiMedia4 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16960 {"MultiMedia4 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16961 {"MultiMedia4 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16962 {"MultiMedia4 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16963 {"MultiMedia4 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16964 {"MultiMedia4 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16965 {"MultiMedia4 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16966 {"MultiMedia4 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16967 {"MultiMedia4 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16968 {"MultiMedia4 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16969 {"MultiMedia4 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16970 {"MultiMedia4 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016971 {"MultiMedia4 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16972 {"MultiMedia4 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16973 {"MultiMedia4 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16974 {"MultiMedia4 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016975
16976 {"MultiMedia5 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16977 {"MultiMedia5 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16978 {"MultiMedia5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16979 {"MultiMedia5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16980 {"MultiMedia5 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16981 {"MultiMedia5 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16982 {"MultiMedia5 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16983 {"MultiMedia5 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16984 {"MultiMedia5 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16985 {"MultiMedia5 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16986 {"MultiMedia5 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16987 {"MultiMedia5 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16988 {"MultiMedia5 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16989 {"MultiMedia5 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16990 {"MultiMedia5 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16991 {"MultiMedia5 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016992 {"MultiMedia5 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16993 {"MultiMedia5 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16994 {"MultiMedia5 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16995 {"MultiMedia5 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016996
16997 {"MultiMedia6 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16998 {"MultiMedia6 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16999 {"MultiMedia6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
17000 {"MultiMedia6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
17001 {"MultiMedia6 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
17002 {"MultiMedia6 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
17003 {"MultiMedia6 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
17004 {"MultiMedia6 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
17005 {"MultiMedia6 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
17006 {"MultiMedia6 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
17007 {"MultiMedia6 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
17008 {"MultiMedia6 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
17009 {"MultiMedia6 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
17010 {"MultiMedia6 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
17011 {"MultiMedia6 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
17012 {"MultiMedia6 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053017013 {"MultiMedia6 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
17014 {"MultiMedia6 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
17015 {"MultiMedia6 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
17016 {"MultiMedia6 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017017
17018 {"MultiMedia8 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
17019 {"MultiMedia8 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
17020 {"MultiMedia8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
17021 {"MultiMedia8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
17022 {"MultiMedia8 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
17023 {"MultiMedia8 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
17024 {"MultiMedia8 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
17025 {"MultiMedia8 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
17026 {"MultiMedia8 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
17027 {"MultiMedia8 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
17028 {"MultiMedia8 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
17029 {"MultiMedia8 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
17030 {"MultiMedia8 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
17031 {"MultiMedia8 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
17032 {"MultiMedia8 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
17033 {"MultiMedia8 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053017034 {"MultiMedia8 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
17035 {"MultiMedia8 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
17036 {"MultiMedia8 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
17037 {"MultiMedia8 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017038
17039 {"MultiMedia9 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
17040 {"MultiMedia9 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
17041 {"MultiMedia9 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
17042 {"MultiMedia9 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
17043 {"MultiMedia9 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
17044 {"MultiMedia9 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
17045 {"MultiMedia9 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
17046 {"MultiMedia9 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053017047 {"MultiMedia9 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
17048 {"MultiMedia9 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
17049 {"MultiMedia9 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
17050 {"MultiMedia9 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017051
Laxminath Kasam38070be2017-08-17 18:21:59 +053017052 {"MultiMedia10 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
17053 {"MultiMedia10 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
17054 {"MultiMedia10 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
17055 {"MultiMedia10 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
17056 {"MultiMedia10 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
17057 {"MultiMedia10 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
17058 {"MultiMedia10 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
17059 {"MultiMedia10 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017060 {"MultiMedia20 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17061 {"MultiMedia20 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17062 {"MultiMedia20 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17063 {"MultiMedia20 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053017064 {"MultiMedia20 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017065 {"MultiMedia20 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
17066 {"MultiMedia20 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
17067 {"MultiMedia20 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
17068 {"MultiMedia20 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
17069 {"MultiMedia20 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
17070 {"MultiMedia20 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
17071 {"MultiMedia20 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
17072 {"MultiMedia20 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
17073 {"MultiMedia20 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
17074 {"MultiMedia20 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
17075 {"MultiMedia20 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
17076 {"MultiMedia20 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
17077 {"MultiMedia20 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
17078 {"MultiMedia20 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
17079 {"MultiMedia20 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
17080 {"MultiMedia20 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053017081 {"MultiMedia20 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
17082 {"MultiMedia20 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
17083 {"MultiMedia20 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
17084 {"MultiMedia20 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017085
17086 {"MultiMedia1 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
17087 {"MultiMedia2 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
17088 {"MultiMedia4 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
17089 {"MultiMedia5 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
17090 {"MultiMedia6 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
17091 {"MultiMedia8 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053017092 {"MultiMedia10 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017093
Asish Bhattacharya34504582017-08-08 12:55:01 +053017094 {"MultiMedia16 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
17095 {"MultiMedia16 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
17096 {"MultiMedia16 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
17097 {"MultiMedia16 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
17098 {"MultiMedia16 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
17099 {"MultiMedia16 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
17100 {"MultiMedia16 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
17101 {"MultiMedia16 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
17102 {"MultiMedia16 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
17103 {"MultiMedia16 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
17104 {"MultiMedia16 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
17105 {"MultiMedia16 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
17106 {"MultiMedia16 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
17107 {"MultiMedia16 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
17108 {"MultiMedia16 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
17109 {"MultiMedia16 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
17110 {"MultiMedia16 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
17111
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017112 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
17113 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
17114 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
17115 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
17116 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
17117 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
17118 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
17119 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
17120 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
17121 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
17122 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
17123 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
17124 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
17125 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
17126 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
17127 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
17128 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
17129 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Audio Mixer"},
17130
17131 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
17132 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
17133 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
17134 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
17135 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
17136 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
17137 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
17138 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
17139 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
17140 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
17141 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
17142 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
17143 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
17144 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
17145 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
17146 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
17147 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
17148 {"INT_BT_A2DP_RX", NULL, "INTERNAL_A2DP_RX Audio Mixer"},
17149
17150 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
17151 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
17152 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
17153 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
17154 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
17155 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
17156 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
17157 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
17158 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
17159 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
17160 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
17161 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
17162 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
17163 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
17164 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
17165 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
17166 {"INT_FM_RX", NULL, "INTERNAL_FM_RX Audio Mixer"},
17167
17168 {"AFE_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
17169 {"AFE_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
17170 {"AFE_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
17171 {"AFE_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
17172 {"AFE_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
17173 {"AFE_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
17174 {"AFE_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
17175 {"AFE_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
17176 {"AFE_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
17177 {"AFE_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
17178 {"AFE_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
17179 {"AFE_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
17180 {"AFE_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
17181 {"AFE_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
17182 {"AFE_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
17183 {"AFE_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
17184 {"PCM_RX", NULL, "AFE_PCM_RX Audio Mixer"},
17185
17186 {"MultiMedia1 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
17187 {"MultiMedia3 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
17188 {"MultiMedia4 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053017189 {"MultiMedia10 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017190 {"MultiMedia17 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
17191 {"MultiMedia18 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
17192 {"MultiMedia19 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +053017193 {"MultiMedia28 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
17194 {"MultiMedia29 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017195 {"MultiMedia5 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
17196 {"MultiMedia8 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053017197 {"MultiMedia16 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017198 {"MultiMedia1 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
17199 {"MultiMedia4 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053017200 {"MultiMedia16 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017201 {"MultiMedia17 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
17202 {"MultiMedia18 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
17203 {"MultiMedia19 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +053017204 {"MultiMedia28 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
17205 {"MultiMedia29 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017206 {"MultiMedia5 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
17207 {"MultiMedia6 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
17208 {"MultiMedia8 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
17209
17210 {"MultiMedia1 Mixer", "AFE_PCM_TX", "PCM_TX"},
17211 {"MultiMedia3 Mixer", "AFE_PCM_TX", "PCM_TX"},
17212 {"MultiMedia4 Mixer", "AFE_PCM_TX", "PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053017213 {"MultiMedia10 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017214 {"MultiMedia17 Mixer", "AFE_PCM_TX", "PCM_TX"},
17215 {"MultiMedia18 Mixer", "AFE_PCM_TX", "PCM_TX"},
17216 {"MultiMedia19 Mixer", "AFE_PCM_TX", "PCM_TX"},
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +053017217 {"MultiMedia28 Mixer", "AFE_PCM_TX", "PCM_TX"},
17218 {"MultiMedia29 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017219 {"MultiMedia5 Mixer", "AFE_PCM_TX", "PCM_TX"},
17220 {"MultiMedia8 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053017221 {"MultiMedia16 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017222 {"MM_UL1", NULL, "MultiMedia1 Mixer"},
17223 {"MultiMedia2 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
17224 {"MM_UL2", NULL, "MultiMedia2 Mixer"},
17225 {"MM_UL3", NULL, "MultiMedia3 Mixer"},
17226 {"MM_UL4", NULL, "MultiMedia4 Mixer"},
17227 {"MM_UL5", NULL, "MultiMedia5 Mixer"},
17228 {"MM_UL6", NULL, "MultiMedia6 Mixer"},
17229 {"MM_UL8", NULL, "MultiMedia8 Mixer"},
17230 {"MM_UL9", NULL, "MultiMedia9 Mixer"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053017231 {"MM_UL10", NULL, "MultiMedia10 Mixer"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053017232 {"MM_UL16", NULL, "MultiMedia16 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017233 {"MM_UL17", NULL, "MultiMedia17 Mixer"},
17234 {"MM_UL18", NULL, "MultiMedia18 Mixer"},
17235 {"MM_UL19", NULL, "MultiMedia19 Mixer"},
17236 {"MM_UL20", NULL, "MultiMedia20 Mixer"},
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +053017237 {"MM_UL28", NULL, "MultiMedia28 Mixer"},
17238 {"MM_UL29", NULL, "MultiMedia29 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017239
17240 {"AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
17241 {"AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
17242 {"AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
17243 {"AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
17244 {"AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
17245 {"AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
17246 {"AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
17247 {"AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
17248 {"AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
17249 {"AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
17250 {"AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
17251 {"AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
17252 {"AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
17253 {"AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
17254 {"AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
17255 {"AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
17256 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Audio Mixer"},
17257
17258 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
17259 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
17260 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
17261 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
17262 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
17263 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
17264 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
17265 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
17266 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
17267 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
17268 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
17269 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
17270 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
17271 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
17272 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
17273 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
17274 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX Audio Mixer"},
17275
17276 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
17277 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
17278 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
17279 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
17280 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
17281 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
17282 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
17283 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
17284 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
17285 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
17286 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
17287 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
17288 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
17289 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
17290 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
17291 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
17292 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX Audio Mixer"},
17293
17294 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
17295 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
17296 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
17297 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
17298 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
17299 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
17300 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
17301 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
17302 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
17303 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
17304 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
17305 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
17306 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
17307 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
17308 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
17309 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
17310 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX Audio Mixer"},
17311
Rohit Kumara5077932017-09-10 22:05:05 +053017312 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
17313 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
17314 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
17315 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
17316 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
17317 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
17318 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
17319 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
17320 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
17321 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
17322 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
17323 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
17324 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
17325 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
17326 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
17327 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
17328 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX Audio Mixer"},
17329
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017330 {"PRI_RX_Voice Mixer", "Voip", "VOIP_DL"},
17331 {"PRI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
17332 {"PRI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17333 {"PRI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17334 {"PRI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
17335 {"PRI_I2S_RX", NULL, "PRI_RX_Voice Mixer"},
17336
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017337 {"SEC_RX_Voice Mixer", "Voip", "VOIP_DL"},
17338 {"SEC_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
17339 {"SEC_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17340 {"SEC_I2S_RX", NULL, "SEC_RX_Voice Mixer"},
17341
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017342 {"SEC_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
17343 {"SEC_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
17344 {"SEC_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17345 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17346 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
17347 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_Voice Mixer"},
17348
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017349 {"SLIM_0_RX_Voice Mixer", "Voip", "VOIP_DL"},
17350 {"SLIM_0_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017351 {"SLIM_0_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17352 {"SLIM_0_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17353 {"SLIM_0_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
17354 {"SLIMBUS_0_RX", NULL, "SLIM_0_RX_Voice Mixer"},
17355
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017356 {"SLIM_6_RX_Voice Mixer", "Voip", "VOIP_DL"},
17357 {"SLIM_6_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017358 {"SLIM_6_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17359 {"SLIM_6_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17360 {"SLIM_6_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
17361 {"SLIMBUS_6_RX", NULL, "SLIM_6_RX_Voice Mixer"},
17362
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017363 {"USB_AUDIO_RX_Voice Mixer", "Voip", "VOIP_DL"},
17364 {"USB_AUDIO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017365 {"USB_AUDIO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17366 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17367 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
17368 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX_Voice Mixer"},
17369
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080017370 {"DISPLAY_PORT_RX_Voice Mixer", "Voip", "VOIP_DL"},
17371 {"DISPLAY_PORT_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080017372 {"DISPLAY_PORT_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17373 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17374 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
17375 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX_Voice Mixer"},
17376
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017377 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voip", "VOIP_DL"},
17378 {"INTERNAL_BT_SCO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
17379 {"INTERNAL_BT_SCO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17380 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17381 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017382 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX_Voice Mixer"},
17383
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017384 {"AFE_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
17385 {"AFE_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
17386 {"AFE_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17387 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17388 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
17389 {"PCM_RX", NULL, "AFE_PCM_RX_Voice Mixer"},
17390
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017391 {"AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
17392 {"AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017393 {"AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17394 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17395 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
17396 {"AUX_PCM_RX", NULL, "AUX_PCM_RX_Voice Mixer"},
17397
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017398 {"SEC_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
17399 {"SEC_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017400 {"SEC_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17401 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17402 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
17403 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX_Voice Mixer"},
17404
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017405 {"TERT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
17406 {"TERT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017407 {"TERT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17408 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17409 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
17410 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX_Voice Mixer"},
17411
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017412 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
17413 {"QUAT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017414 {"QUAT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17415 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17416 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
17417 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX_Voice Mixer"},
17418
Rohit Kumara5077932017-09-10 22:05:05 +053017419 {"QUIN_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
17420 {"QUIN_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053017421 {"QUIN_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17422 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17423 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
17424 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX_Voice Mixer"},
17425
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017426 {"HDMI_RX_Voice Mixer", "Voip", "VOIP_DL"},
17427 {"HDMI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
17428 {"HDMI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17429 {"HDMI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17430 {"HDMI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
17431 {"HDMI", NULL, "HDMI_RX_Voice Mixer"},
17432 {"HDMI", NULL, "HDMI_DL_HL"},
17433
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017434 {"MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017435 {"MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17436 {"MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17437 {"MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
kunleiz8a60b822017-10-11 15:04:02 +080017438 {"MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017439 {"MI2S_RX", NULL, "MI2S_RX_Voice Mixer"},
17440
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017441 {"PRI_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017442 {"PRI_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17443 {"PRI_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
17444 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17445 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
17446 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_Voice Mixer"},
17447
17448 {"INT0_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
17449 {"INT0_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17450 {"INT0_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
17451 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17452 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
17453 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_Voice Mixer"},
17454
17455 {"INT4_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
17456 {"INT4_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17457 {"INT4_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
17458 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17459 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
17460 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_Voice Mixer"},
17461
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017462 {"TERT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017463 {"TERT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17464 {"TERT_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
17465 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17466 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
17467 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_Voice Mixer"},
17468
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017469 {"QUAT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017470 {"QUAT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17471 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17472 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
17473 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_Voice Mixer"},
17474
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017475 {"QUIN_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017476 {"QUIN_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
17477 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17478 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
17479 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_Voice Mixer"},
17480
17481 {"QUAT_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
17482 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_Voice Mixer"},
17483
17484 {"VOC_EXT_EC MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17485 {"VOC_EXT_EC MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17486 {"VOC_EXT_EC MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17487 {"VOC_EXT_EC MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053017488 {"VOC_EXT_EC MUX", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017489 {"VOC_EXT_EC MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017490 {"VOIP_UL", NULL, "VOC_EXT_EC MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017491 {"VOICEMMODE1_UL", NULL, "VOC_EXT_EC MUX"},
17492 {"VOICEMMODE2_UL", NULL, "VOC_EXT_EC MUX"},
17493
17494 {"AUDIO_REF_EC_UL1 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17495 {"AUDIO_REF_EC_UL1 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17496 {"AUDIO_REF_EC_UL1 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17497 {"AUDIO_REF_EC_UL1 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17498 {"AUDIO_REF_EC_UL1 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
17499 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
17500 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
17501 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
17502 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
17503 {"AUDIO_REF_EC_UL1 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
17504
17505 {"AUDIO_REF_EC_UL2 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17506 {"AUDIO_REF_EC_UL2 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17507 {"AUDIO_REF_EC_UL2 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17508 {"AUDIO_REF_EC_UL2 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17509
17510 {"AUDIO_REF_EC_UL3 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17511 {"AUDIO_REF_EC_UL3 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17512 {"AUDIO_REF_EC_UL3 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17513 {"AUDIO_REF_EC_UL3 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17514
17515 {"AUDIO_REF_EC_UL4 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17516 {"AUDIO_REF_EC_UL4 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17517 {"AUDIO_REF_EC_UL4 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17518 {"AUDIO_REF_EC_UL4 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17519
17520 {"AUDIO_REF_EC_UL5 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17521 {"AUDIO_REF_EC_UL5 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17522 {"AUDIO_REF_EC_UL5 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17523 {"AUDIO_REF_EC_UL5 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17524
17525 {"AUDIO_REF_EC_UL6 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17526 {"AUDIO_REF_EC_UL6 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17527 {"AUDIO_REF_EC_UL6 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17528 {"AUDIO_REF_EC_UL6 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17529
17530 {"AUDIO_REF_EC_UL8 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17531 {"AUDIO_REF_EC_UL8 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17532 {"AUDIO_REF_EC_UL8 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17533 {"AUDIO_REF_EC_UL8 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17534
17535 {"AUDIO_REF_EC_UL9 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17536 {"AUDIO_REF_EC_UL9 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17537 {"AUDIO_REF_EC_UL9 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17538 {"AUDIO_REF_EC_UL9 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17539
Laxminath Kasam38070be2017-08-17 18:21:59 +053017540 {"AUDIO_REF_EC_UL10 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17541 {"AUDIO_REF_EC_UL10 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17542 {"AUDIO_REF_EC_UL10 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17543 {"AUDIO_REF_EC_UL10 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17544 {"AUDIO_REF_EC_UL10 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
17545 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
17546 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
17547 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
17548 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
17549 {"AUDIO_REF_EC_UL10 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
Vikram Panduranga016c49f2017-09-11 15:15:56 -070017550
17551 {"AUDIO_REF_EC_UL16 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17552 {"AUDIO_REF_EC_UL16 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17553 {"AUDIO_REF_EC_UL16 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17554 {"AUDIO_REF_EC_UL16 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17555
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017556 {"AUDIO_REF_EC_UL17 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17557 {"AUDIO_REF_EC_UL17 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17558 {"AUDIO_REF_EC_UL17 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17559 {"AUDIO_REF_EC_UL17 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17560
17561 {"AUDIO_REF_EC_UL18 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17562 {"AUDIO_REF_EC_UL18 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17563 {"AUDIO_REF_EC_UL18 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17564 {"AUDIO_REF_EC_UL18 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17565
17566 {"AUDIO_REF_EC_UL19 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17567 {"AUDIO_REF_EC_UL19 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17568 {"AUDIO_REF_EC_UL19 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17569 {"AUDIO_REF_EC_UL19 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17570
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +053017571 {"AUDIO_REF_EC_UL28 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17572 {"AUDIO_REF_EC_UL28 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17573 {"AUDIO_REF_EC_UL28 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17574 {"AUDIO_REF_EC_UL28 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17575
17576 {"AUDIO_REF_EC_UL29 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17577 {"AUDIO_REF_EC_UL29 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17578 {"AUDIO_REF_EC_UL29 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17579 {"AUDIO_REF_EC_UL29 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Yunfei Zhang3efc4a22017-11-07 16:30:13 +080017580
17581 {"LSM1_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
17582 {"LSM2_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
17583 {"LSM3_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
17584 {"LSM4_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
17585 {"LSM5_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
17586 {"LSM6_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
17587 {"LSM7_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
17588 {"LSM8_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
17589
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017590 {"MM_UL1", NULL, "AUDIO_REF_EC_UL1 MUX"},
17591 {"MM_UL2", NULL, "AUDIO_REF_EC_UL2 MUX"},
17592 {"MM_UL3", NULL, "AUDIO_REF_EC_UL3 MUX"},
17593 {"MM_UL4", NULL, "AUDIO_REF_EC_UL4 MUX"},
17594 {"MM_UL5", NULL, "AUDIO_REF_EC_UL5 MUX"},
17595 {"MM_UL6", NULL, "AUDIO_REF_EC_UL6 MUX"},
17596 {"MM_UL8", NULL, "AUDIO_REF_EC_UL8 MUX"},
17597 {"MM_UL9", NULL, "AUDIO_REF_EC_UL9 MUX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053017598 {"MM_UL10", NULL, "AUDIO_REF_EC_UL10 MUX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053017599 {"MM_UL16", NULL, "AUDIO_REF_EC_UL16 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017600 {"MM_UL17", NULL, "AUDIO_REF_EC_UL17 MUX"},
17601 {"MM_UL18", NULL, "AUDIO_REF_EC_UL18 MUX"},
17602 {"MM_UL19", NULL, "AUDIO_REF_EC_UL19 MUX"},
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +053017603 {"MM_UL28", NULL, "AUDIO_REF_EC_UL28 MUX"},
17604 {"MM_UL29", NULL, "AUDIO_REF_EC_UL29 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017605
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017606 {"VoiceMMode1_Tx Mixer", "PRI_TX_MMode1", "PRI_I2S_TX"},
17607 {"VoiceMMode1_Tx Mixer", "PRI_MI2S_TX_MMode1", "PRI_MI2S_TX"},
17608 {"VoiceMMode1_Tx Mixer", "MI2S_TX_MMode1", "MI2S_TX"},
17609 {"VoiceMMode1_Tx Mixer", "TERT_MI2S_TX_MMode1", "TERT_MI2S_TX"},
17610 {"VoiceMMode1_Tx Mixer", "INT3_MI2S_TX_MMode1", "INT3_MI2S_TX"},
17611 {"VoiceMMode1_Tx Mixer", "SLIM_0_TX_MMode1", "SLIMBUS_0_TX"},
17612 {"VoiceMMode1_Tx Mixer", "SLIM_7_TX_MMode1", "SLIMBUS_7_TX"},
17613 {"VoiceMMode1_Tx Mixer", "SLIM_8_TX_MMode1", "SLIMBUS_8_TX"},
17614 {"VoiceMMode1_Tx Mixer", "USB_AUDIO_TX_MMode1", "USB_AUDIO_TX"},
17615 {"VoiceMMode1_Tx Mixer", "INT_BT_SCO_TX_MMode1", "INT_BT_SCO_TX"},
17616 {"VoiceMMode1_Tx Mixer", "AFE_PCM_TX_MMode1", "PCM_TX"},
17617 {"VoiceMMode1_Tx Mixer", "AUX_PCM_TX_MMode1", "AUX_PCM_TX"},
17618 {"VoiceMMode1_Tx Mixer", "SEC_AUX_PCM_TX_MMode1", "SEC_AUX_PCM_TX"},
17619 {"VoiceMMode1_Tx Mixer", "TERT_AUX_PCM_TX_MMode1", "TERT_AUX_PCM_TX"},
17620 {"VoiceMMode1_Tx Mixer", "QUAT_AUX_PCM_TX_MMode1", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053017621 {"VoiceMMode1_Tx Mixer", "QUIN_AUX_PCM_TX_MMode1", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017622 {"VoiceMMode1_Tx Mixer", "QUAT_TDM_TX_0_MMode1", "QUAT_TDM_TX_0"},
17623 {"VOICEMMODE1_UL", NULL, "VoiceMMode1_Tx Mixer"},
17624
17625 {"VoiceMMode2_Tx Mixer", "PRI_TX_MMode2", "PRI_I2S_TX"},
17626 {"VoiceMMode2_Tx Mixer", "PRI_MI2S_TX_MMode2", "PRI_MI2S_TX"},
17627 {"VoiceMMode2_Tx Mixer", "MI2S_TX_MMode2", "MI2S_TX"},
17628 {"VoiceMMode2_Tx Mixer", "TERT_MI2S_TX_MMode2", "TERT_MI2S_TX"},
17629 {"VoiceMMode2_Tx Mixer", "INT3_MI2S_TX_MMode2", "INT3_MI2S_TX"},
17630 {"VoiceMMode2_Tx Mixer", "SLIM_0_TX_MMode2", "SLIMBUS_0_TX"},
17631 {"VoiceMMode2_Tx Mixer", "SLIM_7_TX_MMode2", "SLIMBUS_7_TX"},
17632 {"VoiceMMode2_Tx Mixer", "SLIM_8_TX_MMode2", "SLIMBUS_8_TX"},
17633 {"VoiceMMode2_Tx Mixer", "USB_AUDIO_TX_MMode2", "USB_AUDIO_TX"},
17634 {"VoiceMMode2_Tx Mixer", "INT_BT_SCO_TX_MMode2", "INT_BT_SCO_TX"},
17635 {"VoiceMMode2_Tx Mixer", "AFE_PCM_TX_MMode2", "PCM_TX"},
17636 {"VoiceMMode2_Tx Mixer", "AUX_PCM_TX_MMode2", "AUX_PCM_TX"},
17637 {"VoiceMMode2_Tx Mixer", "SEC_AUX_PCM_TX_MMode2", "SEC_AUX_PCM_TX"},
17638 {"VoiceMMode2_Tx Mixer", "TERT_AUX_PCM_TX_MMode2", "TERT_AUX_PCM_TX"},
17639 {"VoiceMMode2_Tx Mixer", "QUAT_AUX_PCM_TX_MMode2", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053017640 {"VoiceMMode2_Tx Mixer", "QUIN_AUX_PCM_TX_MMode2", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017641 {"VOICEMMODE2_UL", NULL, "VoiceMMode2_Tx Mixer"},
17642
17643 {"Voip_Tx Mixer", "PRI_TX_Voip", "PRI_I2S_TX"},
17644 {"Voip_Tx Mixer", "MI2S_TX_Voip", "MI2S_TX"},
17645 {"Voip_Tx Mixer", "TERT_MI2S_TX_Voip", "TERT_MI2S_TX"},
17646 {"Voip_Tx Mixer", "INT3_MI2S_TX_Voip", "INT3_MI2S_TX"},
17647 {"Voip_Tx Mixer", "SLIM_0_TX_Voip", "SLIMBUS_0_TX"},
17648 {"Voip_Tx Mixer", "SLIM_7_TX_Voip", "SLIMBUS_7_TX"},
17649 {"Voip_Tx Mixer", "SLIM_8_TX_Voip", "SLIMBUS_8_TX"},
17650 {"Voip_Tx Mixer", "USB_AUDIO_TX_Voip", "USB_AUDIO_TX"},
17651 {"Voip_Tx Mixer", "INTERNAL_BT_SCO_TX_Voip", "INT_BT_SCO_TX"},
17652 {"Voip_Tx Mixer", "AFE_PCM_TX_Voip", "PCM_TX"},
17653 {"Voip_Tx Mixer", "AUX_PCM_TX_Voip", "AUX_PCM_TX"},
17654 {"Voip_Tx Mixer", "SEC_AUX_PCM_TX_Voip", "SEC_AUX_PCM_TX"},
17655 {"Voip_Tx Mixer", "TERT_AUX_PCM_TX_Voip", "TERT_AUX_PCM_TX"},
17656 {"Voip_Tx Mixer", "QUAT_AUX_PCM_TX_Voip", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053017657 {"Voip_Tx Mixer", "QUIN_AUX_PCM_TX_Voip", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017658 {"Voip_Tx Mixer", "PRI_MI2S_TX_Voip", "PRI_MI2S_TX"},
17659 {"VOIP_UL", NULL, "Voip_Tx Mixer"},
17660
17661 {"SLIMBUS_DL_HL", "Switch", "SLIM0_DL_HL"},
17662 {"SLIMBUS_0_RX", NULL, "SLIMBUS_DL_HL"},
17663 {"SLIMBUS1_DL_HL", "Switch", "SLIM1_DL_HL"},
17664 {"SLIMBUS_1_RX", NULL, "SLIMBUS1_DL_HL"},
17665 {"SLIMBUS3_DL_HL", "Switch", "SLIM3_DL_HL"},
17666 {"SLIMBUS_3_RX", NULL, "SLIMBUS3_DL_HL"},
17667 {"SLIMBUS4_DL_HL", "Switch", "SLIM4_DL_HL"},
17668 {"SLIMBUS_4_RX", NULL, "SLIMBUS4_DL_HL"},
17669 {"SLIMBUS6_DL_HL", "Switch", "SLIM0_DL_HL"},
17670 {"SLIMBUS_6_RX", NULL, "SLIMBUS6_DL_HL"},
17671 {"SLIM0_UL_HL", NULL, "SLIMBUS_0_TX"},
17672 {"SLIM1_UL_HL", NULL, "SLIMBUS_1_TX"},
17673 {"SLIM3_UL_HL", NULL, "SLIMBUS_3_TX"},
17674 {"SLIM4_UL_HL", NULL, "SLIMBUS_4_TX"},
17675 {"SLIM8_UL_HL", NULL, "SLIMBUS_8_TX"},
17676
17677 {"LSM1 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
17678 {"LSM1 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
17679 {"LSM1 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
17680 {"LSM1 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
17681 {"LSM1 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
17682 {"LSM1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17683 {"LSM1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17684 {"LSM1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
17685 {"LSM1_UL_HL", NULL, "LSM1 Mixer"},
17686
17687 {"LSM2 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
17688 {"LSM2 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
17689 {"LSM2 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
17690 {"LSM2 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
17691 {"LSM2 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
17692 {"LSM2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17693 {"LSM2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17694 {"LSM2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
17695 {"LSM2_UL_HL", NULL, "LSM2 Mixer"},
17696
17697
17698 {"LSM3 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
17699 {"LSM3 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
17700 {"LSM3 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
17701 {"LSM3 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
17702 {"LSM3 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
17703 {"LSM3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17704 {"LSM3 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17705 {"LSM3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
17706 {"LSM3_UL_HL", NULL, "LSM3 Mixer"},
17707
17708
17709 {"LSM4 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
17710 {"LSM4 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
17711 {"LSM4 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
17712 {"LSM4 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
17713 {"LSM4 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
17714 {"LSM4 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17715 {"LSM4 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17716 {"LSM4 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
17717 {"LSM4_UL_HL", NULL, "LSM4 Mixer"},
17718
17719 {"LSM5 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
17720 {"LSM5 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
17721 {"LSM5 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
17722 {"LSM5 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
17723 {"LSM5 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
17724 {"LSM5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
17725 {"LSM5 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17726 {"LSM5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
17727 {"LSM5_UL_HL", NULL, "LSM5 Mixer"},
17728
17729 {"LSM6 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
17730 {"LSM6 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
17731 {"LSM6 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
17732 {"LSM6 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
17733 {"LSM6 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
17734 {"LSM6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17735 {"LSM6_UL_HL", NULL, "LSM6 Mixer"},
17736
17737 {"LSM7 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
17738 {"LSM7 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
17739 {"LSM7 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
17740 {"LSM7 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
17741 {"LSM7 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
17742 {"LSM7 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17743 {"LSM7_UL_HL", NULL, "LSM7 Mixer"},
17744
17745 {"LSM8 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
17746 {"LSM8 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
17747 {"LSM8 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
17748 {"LSM8 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
17749 {"LSM8 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
17750 {"LSM8 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17751 {"LSM8_UL_HL", NULL, "LSM8 Mixer"},
17752
17753
17754 {"CPE_LSM_UL_HL", NULL, "BE_IN"},
17755 {"QCHAT_Tx Mixer", "PRI_TX_QCHAT", "PRI_I2S_TX"},
17756 {"QCHAT_Tx Mixer", "SLIM_0_TX_QCHAT", "SLIMBUS_0_TX"},
17757 {"QCHAT_Tx Mixer", "SLIM_7_TX_QCHAT", "SLIMBUS_7_TX"},
17758 {"QCHAT_Tx Mixer", "SLIM_8_TX_QCHAT", "SLIMBUS_8_TX"},
17759 {"QCHAT_Tx Mixer", "INTERNAL_BT_SCO_TX_QCHAT", "INT_BT_SCO_TX"},
17760 {"QCHAT_Tx Mixer", "AFE_PCM_TX_QCHAT", "PCM_TX"},
17761 {"QCHAT_Tx Mixer", "AUX_PCM_TX_QCHAT", "AUX_PCM_TX"},
17762 {"QCHAT_Tx Mixer", "SEC_AUX_PCM_TX_QCHAT", "SEC_AUX_PCM_TX"},
17763 {"QCHAT_Tx Mixer", "TERT_AUX_PCM_TX_QCHAT", "TERT_AUX_PCM_TX"},
17764 {"QCHAT_Tx Mixer", "QUAT_AUX_PCM_TX_QCHAT", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053017765 {"QCHAT_Tx Mixer", "QUIN_AUX_PCM_TX_QCHAT", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017766 {"QCHAT_Tx Mixer", "MI2S_TX_QCHAT", "MI2S_TX"},
17767 {"QCHAT_Tx Mixer", "PRI_MI2S_TX_QCHAT", "PRI_MI2S_TX"},
17768 {"QCHAT_Tx Mixer", "TERT_MI2S_TX_QCHAT", "TERT_MI2S_TX"},
17769 {"QCHAT_Tx Mixer", "INT3_MI2S_TX_QCHAT", "INT3_MI2S_TX"},
17770 {"QCHAT_Tx Mixer", "USB_AUDIO_TX_QCHAT", "USB_AUDIO_TX"},
17771 {"QCHAT_UL", NULL, "QCHAT_Tx Mixer"},
17772
17773 {"INT_FM_RX", NULL, "INTFM_DL_HL"},
17774 {"INTFM_UL_HL", NULL, "INT_FM_TX"},
17775 {"INTHFP_UL_HL", NULL, "HFP_PRI_AUX_UL_HL"},
17776 {"HFP_PRI_AUX_UL_HL", "Switch", "AUX_PCM_TX"},
17777 {"INTHFP_UL_HL", NULL, "HFP_AUX_UL_HL"},
17778 {"HFP_AUX_UL_HL", "Switch", "SEC_AUX_PCM_TX"},
17779 {"INTHFP_UL_HL", NULL, "HFP_INT_UL_HL"},
17780 {"HFP_INT_UL_HL", "Switch", "INT_BT_SCO_TX"},
17781 {"SLIM7_UL_HL", NULL, "HFP_SLIM7_UL_HL"},
17782 {"HFP_SLIM7_UL_HL", "Switch", "SLIMBUS_7_TX"},
17783 {"AUX_PCM_RX", NULL, "AUXPCM_DL_HL"},
17784 {"AUX_PCM_RX", NULL, "INTHFP_DL_HL"},
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080017785 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017786 {"AUXPCM_UL_HL", NULL, "AUX_PCM_TX"},
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080017787 {"SEC_AUXPCM_UL_HL", NULL, "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017788 {"MI2S_RX", NULL, "MI2S_DL_HL"},
17789 {"MI2S_UL_HL", NULL, "MI2S_TX"},
17790 {"PCM_RX_DL_HL", "Switch", "SLIM0_DL_HL"},
17791 {"PCM_RX", NULL, "PCM_RX_DL_HL"},
17792
17793 /* connect to INT4_MI2S_DL_HL since same pcm_id */
17794 {"INT0_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
17795 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_DL_HL"},
17796 {"INT4_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
17797 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_DL_HL"},
17798 {"PRI_MI2S_RX_DL_HL", "Switch", "PRI_MI2S_DL_HL"},
17799 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_DL_HL"},
17800 {"SEC_MI2S_RX_DL_HL", "Switch", "SEC_MI2S_DL_HL"},
17801 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_DL_HL"},
17802 {"TERT_MI2S_RX_DL_HL", "Switch", "TERT_MI2S_DL_HL"},
17803 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_DL_HL"},
17804
17805 {"QUAT_MI2S_RX_DL_HL", "Switch", "QUAT_MI2S_DL_HL"},
17806 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053017807 {"QUIN_MI2S_RX_DL_HL", "Switch", "QUIN_MI2S_DL_HL"},
17808 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017809 {"MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
17810 {"INT3_MI2S_UL_HL", NULL, "INT3_MI2S_TX"},
17811 {"TERT_MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
17812 {"SEC_I2S_RX", NULL, "SEC_I2S_DL_HL"},
17813 {"PRI_MI2S_UL_HL", NULL, "PRI_MI2S_TX"},
17814 {"SEC_MI2S_UL_HL", NULL, "SEC_MI2S_TX"},
17815 {"SEC_MI2S_RX", NULL, "SEC_MI2S_DL_HL"},
17816 {"PRI_MI2S_RX", NULL, "PRI_MI2S_DL_HL"},
17817 {"TERT_MI2S_RX", NULL, "TERT_MI2S_DL_HL"},
17818 {"QUAT_MI2S_UL_HL", NULL, "QUAT_MI2S_TX"},
17819
17820 {"PRI_TDM_TX_0_UL_HL", NULL, "PRI_TDM_TX_0"},
17821 {"PRI_TDM_TX_1_UL_HL", NULL, "PRI_TDM_TX_1"},
17822 {"PRI_TDM_TX_2_UL_HL", NULL, "PRI_TDM_TX_2"},
17823 {"PRI_TDM_TX_3_UL_HL", NULL, "PRI_TDM_TX_3"},
17824 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_DL_HL"},
17825 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_DL_HL"},
17826 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_DL_HL"},
17827 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_DL_HL"},
17828 {"SEC_TDM_TX_0_UL_HL", NULL, "SEC_TDM_TX_0"},
17829 {"SEC_TDM_TX_1_UL_HL", NULL, "SEC_TDM_TX_1"},
17830 {"SEC_TDM_TX_2_UL_HL", NULL, "SEC_TDM_TX_2"},
17831 {"SEC_TDM_TX_3_UL_HL", NULL, "SEC_TDM_TX_3"},
17832 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0_DL_HL"},
17833 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"},
17834 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"},
17835 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"},
17836 {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"},
17837 {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"},
17838 {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"},
17839 {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"},
17840 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"},
17841 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"},
17842 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"},
17843 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3_DL_HL"},
17844 {"QUAT_TDM_TX_0_UL_HL", NULL, "QUAT_TDM_TX_0"},
17845 {"QUAT_TDM_TX_1_UL_HL", NULL, "QUAT_TDM_TX_1"},
17846 {"QUAT_TDM_TX_2_UL_HL", NULL, "QUAT_TDM_TX_2"},
17847 {"QUAT_TDM_TX_3_UL_HL", NULL, "QUAT_TDM_TX_3"},
17848 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0_DL_HL"},
17849 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1_DL_HL"},
17850 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_DL_HL"},
17851 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053017852 {"QUIN_TDM_TX_0_UL_HL", NULL, "QUIN_TDM_TX_0"},
17853 {"QUIN_TDM_TX_1_UL_HL", NULL, "QUIN_TDM_TX_1"},
17854 {"QUIN_TDM_TX_2_UL_HL", NULL, "QUIN_TDM_TX_2"},
17855 {"QUIN_TDM_TX_3_UL_HL", NULL, "QUIN_TDM_TX_3"},
17856 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0_DL_HL"},
17857 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1_DL_HL"},
17858 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2_DL_HL"},
17859 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017860
17861 {"PRI_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17862 {"PRI_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17863 {"PRI_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17864 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
17865 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
17866 {"PRI_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
17867 {"PRI_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
17868 {"PRI_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
17869 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
17870 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
17871 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
17872 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
17873 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
17874 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
17875 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
17876 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053017877 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
17878 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
17879 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
17880 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017881 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Port Mixer"},
17882
17883 {"PRI_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17884 {"PRI_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17885 {"PRI_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17886 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
17887 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
17888 {"PRI_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
17889 {"PRI_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
17890 {"PRI_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
17891 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
17892 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
17893 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
17894 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
17895 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
17896 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
17897 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
17898 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053017899 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
17900 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
17901 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
17902 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017903 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Port Mixer"},
17904
17905 {"PRI_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17906 {"PRI_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17907 {"PRI_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17908 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
17909 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
17910 {"PRI_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
17911 {"PRI_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
17912 {"PRI_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
17913 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
17914 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
17915 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
17916 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
17917 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
17918 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
17919 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
17920 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053017921 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
17922 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
17923 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
17924 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017925 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Port Mixer"},
17926
17927 {"PRI_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17928 {"PRI_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17929 {"PRI_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17930 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
17931 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
17932 {"PRI_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
17933 {"PRI_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
17934 {"PRI_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
17935 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
17936 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
17937 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
17938 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
17939 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
17940 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
17941 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
17942 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053017943 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
17944 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
17945 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
17946 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017947 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Port Mixer"},
17948
17949 {"SEC_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17950 {"SEC_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17951 {"SEC_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17952 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
17953 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
17954 {"SEC_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
17955 {"SEC_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
17956 {"SEC_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
17957 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
17958 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
17959 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
17960 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
17961 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
17962 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
17963 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
17964 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053017965 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
17966 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
17967 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
17968 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017969 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Port Mixer"},
17970
17971 {"SEC_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17972 {"SEC_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17973 {"SEC_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17974 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
17975 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
17976 {"SEC_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
17977 {"SEC_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
17978 {"SEC_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
17979 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
17980 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
17981 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
17982 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
17983 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
17984 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
17985 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
17986 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053017987 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
17988 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
17989 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
17990 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017991 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Port Mixer"},
17992
17993 {"SEC_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
17994 {"SEC_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
17995 {"SEC_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
17996 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
17997 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
17998 {"SEC_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
17999 {"SEC_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18000 {"SEC_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
18001 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
18002 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
18003 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
18004 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
18005 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
18006 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
18007 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
18008 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053018009 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
18010 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
18011 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
18012 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018013 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Port Mixer"},
18014
18015 {"SEC_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18016 {"SEC_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18017 {"SEC_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
18018 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18019 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
18020 {"SEC_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
18021 {"SEC_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18022 {"SEC_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
18023 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
18024 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
18025 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
18026 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
18027 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
18028 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
18029 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
18030 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053018031 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
18032 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
18033 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
18034 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018035 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"},
18036
18037 {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18038 {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18039 {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
18040 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18041 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
18042 {"TERT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
18043 {"TERT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18044 {"TERT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
18045 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
18046 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
18047 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
18048 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
18049 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
18050 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
18051 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
18052 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053018053 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
18054 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
18055 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
18056 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018057 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Port Mixer"},
18058
18059 {"TERT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18060 {"TERT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18061 {"TERT_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
18062 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18063 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
18064 {"TERT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
18065 {"TERT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18066 {"TERT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
18067 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
18068 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
18069 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
18070 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
18071 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
18072 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
18073 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
18074 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053018075 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
18076 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
18077 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
18078 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018079 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Port Mixer"},
18080
18081 {"TERT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18082 {"TERT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18083 {"TERT_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
18084 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18085 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
18086 {"TERT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
18087 {"TERT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18088 {"TERT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
18089 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
18090 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
18091 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
18092 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
18093 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
18094 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
18095 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
18096 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053018097 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
18098 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
18099 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
18100 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018101 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Port Mixer"},
18102
18103 {"TERT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18104 {"TERT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18105 {"TERT_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
18106 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18107 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
18108 {"TERT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
18109 {"TERT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18110 {"TERT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
18111 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
18112 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
18113 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
18114 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
18115 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
18116 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
18117 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
18118 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053018119 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
18120 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
18121 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
18122 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018123 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Port Mixer"},
18124
18125 {"QUAT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18126 {"QUAT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18127 {"QUAT_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
18128 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18129 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
18130 {"QUAT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
18131 {"QUAT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18132 {"QUAT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
18133 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
18134 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
18135 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
18136 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
18137 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
18138 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
18139 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
18140 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053018141 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
18142 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
18143 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
18144 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018145 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Port Mixer"},
18146
18147 {"QUAT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18148 {"QUAT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18149 {"QUAT_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
18150 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18151 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
18152 {"QUAT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
18153 {"QUAT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18154 {"QUAT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
18155 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
18156 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
18157 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
18158 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
18159 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
18160 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
18161 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
18162 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053018163 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
18164 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
18165 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
18166 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018167 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Port Mixer"},
18168
18169 {"QUAT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18170 {"QUAT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18171 {"QUAT_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
18172 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18173 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
18174 {"QUAT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
18175 {"QUAT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18176 {"QUAT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
18177 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
18178 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
18179 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
18180 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
18181 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
18182 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
18183 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
18184 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053018185 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
18186 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
18187 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
18188 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018189 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Port Mixer"},
18190
18191 {"QUAT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18192 {"QUAT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18193 {"QUAT_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
18194 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18195 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
18196 {"QUAT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
18197 {"QUAT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18198 {"QUAT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
18199 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
18200 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
18201 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
18202 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
18203 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
18204 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
18205 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
18206 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053018207 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
18208 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
18209 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
18210 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018211 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Port Mixer"},
18212
Rohit Kumara5077932017-09-10 22:05:05 +053018213 {"QUIN_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18214 {"QUIN_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18215 {"QUIN_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
18216 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18217 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
18218 {"QUIN_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
18219 {"QUIN_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18220 {"QUIN_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
18221 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
18222 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
18223 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
18224 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
18225 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
18226 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
18227 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
18228 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
18229 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
18230 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
18231 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
18232 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053018233 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053018234
18235 {"QUIN_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18236 {"QUIN_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18237 {"QUIN_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
18238 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18239 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
18240 {"QUIN_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
18241 {"QUIN_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18242 {"QUIN_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
18243 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
18244 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
18245 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
18246 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
18247 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
18248 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
18249 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
18250 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
18251 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
18252 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
18253 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
18254 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053018255 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053018256
18257 {"QUIN_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18258 {"QUIN_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18259 {"QUIN_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
18260 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18261 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
18262 {"QUIN_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
18263 {"QUIN_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18264 {"QUIN_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
18265 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
18266 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
18267 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
18268 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
18269 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
18270 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
18271 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
18272 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
18273 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
18274 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
18275 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
18276 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053018277 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053018278
18279 {"QUIN_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18280 {"QUIN_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18281 {"QUIN_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
18282 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18283 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
18284 {"QUIN_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
18285 {"QUIN_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18286 {"QUIN_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
18287 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
18288 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
18289 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
18290 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
18291 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
18292 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
18293 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
18294 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
18295 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
18296 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
18297 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
18298 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053018299 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053018300
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018301 {"INT0_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18302 {"INT0_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18303 {"INT0_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
18304 {"INT0_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053018305 {"INT0_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018306 {"INT0_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
18307 {"INT0_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
18308 {"INT0_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
18309 {"INT0_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18310 {"INT0_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
18311 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Port Mixer"},
18312
18313 {"INT4_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18314 {"INT4_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18315 {"INT4_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
18316 {"INT4_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053018317 {"INT4_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018318 {"INT4_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
18319 {"INT4_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
18320 {"INT4_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
18321 {"INT4_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18322 {"INT4_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
18323 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Port Mixer"},
18324
18325 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18326 {"SLIMBUS_0_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
18327 {"SLIMBUS_0_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
18328 {"SLIMBUS_0_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
18329 {"SLIMBUS_0_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
18330 {"SLIMBUS_0_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18331 {"SLIMBUS_0_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
18332 {"SLIMBUS_0_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
18333 {"SLIMBUS_0_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053018334 {"SLIMBUS_0_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018335 {"SLIMBUS_0_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
18336 {"SLIMBUS_0_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18337 {"SLIMBUS_0_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18338 {"SLIMBUS_0_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
18339 {"SLIMBUS_0_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053018340 {"SLIMBUS_0_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018341 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
18342 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Port Mixer"},
18343 {"AFE_PCM_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18344 {"AFE_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
18345 {"PCM_RX", NULL, "AFE_PCM_RX Port Mixer"},
18346 {"USB_AUDIO_RX Port Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
18347 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Port Mixer"},
18348 {"USB_DL_HL", "Switch", "USBAUDIO_DL_HL"},
18349 {"USB_AUDIO_RX", NULL, "USB_DL_HL"},
18350 {"USBAUDIO_UL_HL", NULL, "USB_AUDIO_TX"},
18351
18352
18353 {"AUX_PCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18354 {"AUX_PCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
18355 {"AUX_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
18356 {"AUX_PCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
18357 {"AUX_PCM_RX Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080018358 {"AUX_PCM_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018359 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Port Mixer"},
18360
18361 {"SEC_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18362 {"SEC_AUXPCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
18363 {"SEC_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080018364 {"SEC_AUXPCM_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018365 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_RX Port Mixer"},
18366
18367 {"TERT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18368 {"TERT_AUXPCM_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
18369 {"TERT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
18370 {"TERT_AUX_PCM_RX", NULL, "TERT_AUXPCM_RX Port Mixer"},
18371
18372 {"QUAT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18373 {"QUAT_AUXPCM_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
18374 {"QUAT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
18375 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUXPCM_RX Port Mixer"},
18376
Rohit Kumara5077932017-09-10 22:05:05 +053018377 {"QUIN_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18378 {"QUIN_AUXPCM_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
18379 {"QUIN_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
18380 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUXPCM_RX Port Mixer"},
18381
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018382 {"Voice Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
18383 {"Voice Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
18384 {"Voice Stub Tx Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
18385 {"Voice Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
18386 {"Voice Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18387 {"Voice Stub Tx Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
18388 {"Voice Stub Tx Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
18389 {"Voice Stub Tx Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053018390 {"Voice Stub Tx Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018391 {"Voice Stub Tx Mixer", "MI2S_TX", "MI2S_TX"},
18392 {"Voice Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18393 {"Voice Stub Tx Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
18394 {"Voice Stub Tx Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
18395 {"Voice Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
18396 {"Voice Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
18397 {"Voice Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
18398 {"Voice Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
18399 {"Voice Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
18400 {"Voice Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
18401 {"VOICE_STUB_UL", NULL, "Voice Stub Tx Mixer"},
18402
18403 {"VoLTE Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
18404 {"VoLTE Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
18405 {"VoLTE Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
18406 {"VoLTE Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18407 {"VoLTE Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
18408 {"VoLTE Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
18409 {"VoLTE Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
18410 {"VoLTE Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
18411 {"VoLTE Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
18412 {"VoLTE Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18413 {"VoLTE Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
18414 {"VOLTE_STUB_UL", NULL, "VoLTE Stub Tx Mixer"},
18415
18416 {"Voice2 Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
18417 {"Voice2 Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
18418 {"Voice2 Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
18419 {"Voice2 Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18420 {"Voice2 Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
18421 {"Voice2 Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
18422 {"Voice2 Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
18423 {"Voice2 Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
18424 {"Voice2 Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
18425 {"Voice2 Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18426 {"Voice2 Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
18427 {"VOICE2_STUB_UL", NULL, "Voice2 Stub Tx Mixer"},
18428
kunleizdf5a00a2017-11-27 15:27:36 +080018429 {"STUB_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
18430 {"STUB_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018431 {"STUB_RX", NULL, "STUB_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080018432
18433 {"SLIMBUS_1_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
18434 {"SLIMBUS_1_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018435 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080018436
18437 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
18438 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018439 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX_Voice Mixer"},
18440
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018441 {"SLIM_7_RX_Voice Mixer", "Voip", "VOIP_DL"},
18442 {"SLIM_7_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018443 {"SLIM_7_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
18444 {"SLIM_7_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
18445 {"SLIM_7_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
18446 {"SLIMBUS_7_RX", NULL, "SLIM_7_RX_Voice Mixer"},
18447
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018448 {"SLIM_8_RX_Voice Mixer", "Voip", "VOIP_DL"},
18449 {"SLIM_8_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018450 {"SLIM_8_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
18451 {"SLIM_8_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
18452 {"SLIM_8_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
18453 {"SLIMBUS_8_RX", NULL, "SLIM_8_RX_Voice Mixer"},
18454
18455 {"SLIMBUS_1_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
18456 {"SLIMBUS_1_RX Port Mixer", "AFE_PCM_TX", "PCM_TX"},
18457 {"SLIMBUS_1_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18458 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Port Mixer"},
18459 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
18460 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
18461 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Port Mixer"},
18462 {"SLIMBUS_3_RX Port Mixer", "INTERNAL_BT_SCO_RX", "INT_BT_SCO_RX"},
18463 {"SLIMBUS_3_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
18464 {"SLIMBUS_3_RX Port Mixer", "AFE_PCM_RX", "PCM_RX"},
18465 {"SLIMBUS_3_RX Port Mixer", "AUX_PCM_RX", "AUX_PCM_RX"},
18466 {"SLIMBUS_3_RX Port Mixer", "SLIM_0_RX", "SLIMBUS_0_RX"},
18467 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX Port Mixer"},
18468
18469 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18470 {"SLIMBUS_6_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
18471 {"SLIMBUS_6_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
18472 {"SLIMBUS_6_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
18473 {"SLIMBUS_6_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
18474 {"SLIMBUS_6_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18475 {"SLIMBUS_6_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
18476 {"SLIMBUS_6_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
18477 {"SLIMBUS_6_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18478 {"SLIMBUS_6_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
18479 {"SLIMBUS_6_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
18480 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
18481 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Port Mixer"},
18482
18483 {"HDMI_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
18484 {"HDMI", NULL, "HDMI_RX Port Mixer"},
18485
18486 {"DISPLAY_PORT_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
18487 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX Port Mixer"},
18488
18489 {"SEC_I2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
18490 {"SEC_I2S_RX", NULL, "SEC_I2S_RX Port Mixer"},
18491
18492 {"MI2S_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
18493 {"MI2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
18494 {"MI2S_RX", NULL, "MI2S_RX Port Mixer"},
18495
18496 {"PRI_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18497 {"PRI_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18498 {"PRI_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
18499 {"PRI_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053018500 {"PRI_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018501 {"PRI_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
18502 {"PRI_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18503 {"PRI_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
18504 {"PRI_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080018505 {"PRI_MI2S_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018506 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Port Mixer"},
18507
18508 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18509 {"SEC_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18510 {"SEC_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
18511 {"SEC_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053018512 {"SEC_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018513 {"SEC_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
18514 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18515 {"SEC_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080018516 {"SEC_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018517 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Port Mixer"},
18518
18519 {"TERT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18520 {"TERT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18521 {"TERT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
18522 {"TERT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053018523 {"TERT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018524 {"TERT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
18525 {"TERT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
18526 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Port Mixer"},
18527
18528 {"QUAT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18529 {"QUAT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18530 {"QUAT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
18531 {"QUAT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053018532 {"QUAT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018533 {"QUAT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
18534 {"QUAT_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
18535 {"QUAT_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
18536 {"QUAT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
18537 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Port Mixer"},
18538
Rohit Kumara5077932017-09-10 22:05:05 +053018539 {"QUIN_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
18540 {"QUIN_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
18541 {"QUIN_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
18542 {"QUIN_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
18543 {"QUIN_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
18544 {"QUIN_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
18545 {"QUIN_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
18546 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Port Mixer"},
18547
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018548 /* Backend Enablement */
18549
18550 {"BE_OUT", NULL, "PRI_I2S_RX"},
18551 {"BE_OUT", NULL, "SEC_I2S_RX"},
18552 {"BE_OUT", NULL, "SLIMBUS_0_RX"},
18553 {"BE_OUT", NULL, "SLIMBUS_1_RX"},
18554 {"BE_OUT", NULL, "SLIMBUS_2_RX"},
18555 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
18556 {"BE_OUT", NULL, "SLIMBUS_4_RX"},
18557 {"BE_OUT", NULL, "SLIMBUS_5_RX"},
18558 {"BE_OUT", NULL, "SLIMBUS_6_RX"},
18559 {"BE_OUT", NULL, "SLIMBUS_7_RX"},
18560 {"BE_OUT", NULL, "SLIMBUS_8_RX"},
18561 {"BE_OUT", NULL, "USB_AUDIO_RX"},
18562 {"BE_OUT", NULL, "HDMI"},
18563 {"BE_OUT", NULL, "DISPLAY_PORT"},
18564 {"BE_OUT", NULL, "SPDIF_RX"},
18565 {"BE_OUT", NULL, "MI2S_RX"},
18566 {"BE_OUT", NULL, "QUAT_MI2S_RX"},
18567 {"BE_OUT", NULL, "QUIN_MI2S_RX"},
18568 {"BE_OUT", NULL, "TERT_MI2S_RX"},
18569 {"BE_OUT", NULL, "SEC_MI2S_RX"},
18570 {"BE_OUT", NULL, "SEC_MI2S_RX_SD1"},
18571 {"BE_OUT", NULL, "PRI_MI2S_RX"},
18572 {"BE_OUT", NULL, "INT0_MI2S_RX"},
18573 {"BE_OUT", NULL, "INT4_MI2S_RX"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053018574 {"BE_OUT", NULL, "INT2_MI2S_RX"},
18575 {"BE_OUT", NULL, "INT3_MI2S_RX"},
18576 {"BE_OUT", NULL, "INT5_MI2S_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018577 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
18578 {"BE_OUT", NULL, "INT_BT_A2DP_RX"},
18579 {"BE_OUT", NULL, "INT_FM_RX"},
18580 {"BE_OUT", NULL, "PCM_RX"},
18581 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
18582 {"BE_OUT", NULL, "AUX_PCM_RX"},
18583 {"BE_OUT", NULL, "SEC_AUX_PCM_RX"},
18584 {"BE_OUT", NULL, "TERT_AUX_PCM_RX"},
18585 {"BE_OUT", NULL, "QUAT_AUX_PCM_RX"},
Rohit Kumara5077932017-09-10 22:05:05 +053018586 {"BE_OUT", NULL, "QUIN_AUX_PCM_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018587 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
18588 {"BE_OUT", NULL, "INT_FM_RX"},
18589 {"BE_OUT", NULL, "PCM_RX"},
18590 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
18591 {"BE_OUT", NULL, "VOICE_PLAYBACK_TX"},
18592 {"BE_OUT", NULL, "VOICE2_PLAYBACK_TX"},
18593 {"BE_OUT", NULL, "PRI_TDM_RX_0"},
18594 {"BE_OUT", NULL, "PRI_TDM_RX_1"},
18595 {"BE_OUT", NULL, "PRI_TDM_RX_2"},
18596 {"BE_OUT", NULL, "PRI_TDM_RX_3"},
18597 {"BE_OUT", NULL, "SEC_TDM_RX_0"},
18598 {"BE_OUT", NULL, "SEC_TDM_RX_1"},
18599 {"BE_OUT", NULL, "SEC_TDM_RX_2"},
18600 {"BE_OUT", NULL, "SEC_TDM_RX_3"},
18601 {"BE_OUT", NULL, "TERT_TDM_RX_0"},
18602 {"BE_OUT", NULL, "TERT_TDM_RX_1"},
18603 {"BE_OUT", NULL, "TERT_TDM_RX_2"},
18604 {"BE_OUT", NULL, "TERT_TDM_RX_3"},
18605 {"BE_OUT", NULL, "TERT_TDM_RX_4"},
18606 {"BE_OUT", NULL, "QUAT_TDM_RX_0"},
18607 {"BE_OUT", NULL, "QUAT_TDM_RX_1"},
18608 {"BE_OUT", NULL, "QUAT_TDM_RX_2"},
18609 {"BE_OUT", NULL, "QUAT_TDM_RX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053018610 {"BE_OUT", NULL, "QUIN_TDM_RX_0"},
18611 {"BE_OUT", NULL, "QUIN_TDM_RX_1"},
18612 {"BE_OUT", NULL, "QUIN_TDM_RX_2"},
18613 {"BE_OUT", NULL, "QUIN_TDM_RX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018614
18615 {"PRI_I2S_TX", NULL, "BE_IN"},
18616 {"MI2S_TX", NULL, "BE_IN"},
18617 {"QUAT_MI2S_TX", NULL, "BE_IN"},
18618 {"QUIN_MI2S_TX", NULL, "BE_IN"},
18619 {"PRI_MI2S_TX", NULL, "BE_IN"},
18620 {"TERT_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053018621 {"INT0_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018622 {"INT2_MI2S_TX", NULL, "BE_IN"},
18623 {"INT3_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053018624 {"INT4_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018625 {"INT5_MI2S_TX", NULL, "BE_IN"},
18626 {"SEC_MI2S_TX", NULL, "BE_IN"},
18627 {"SENARY_MI2S_TX", NULL, "BE_IN" },
18628 {"SLIMBUS_0_TX", NULL, "BE_IN" },
18629 {"SLIMBUS_1_TX", NULL, "BE_IN" },
18630 {"SLIMBUS_3_TX", NULL, "BE_IN" },
18631 {"SLIMBUS_4_TX", NULL, "BE_IN" },
18632 {"SLIMBUS_5_TX", NULL, "BE_IN" },
18633 {"SLIMBUS_6_TX", NULL, "BE_IN" },
18634 {"SLIMBUS_7_TX", NULL, "BE_IN" },
18635 {"SLIMBUS_8_TX", NULL, "BE_IN" },
18636 {"USB_AUDIO_TX", NULL, "BE_IN" },
18637 {"INT_BT_SCO_TX", NULL, "BE_IN"},
18638 {"INT_FM_TX", NULL, "BE_IN"},
18639 {"PCM_TX", NULL, "BE_IN"},
18640 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
18641 {"BE_OUT", NULL, "STUB_RX"},
18642 {"STUB_TX", NULL, "BE_IN"},
18643 {"STUB_1_TX", NULL, "BE_IN"},
18644 {"BE_OUT", NULL, "AUX_PCM_RX"},
18645 {"AUX_PCM_TX", NULL, "BE_IN"},
18646 {"SEC_AUX_PCM_TX", NULL, "BE_IN"},
18647 {"TERT_AUX_PCM_TX", NULL, "BE_IN"},
18648 {"QUAT_AUX_PCM_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053018649 {"QUIN_AUX_PCM_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018650 {"INCALL_RECORD_TX", NULL, "BE_IN"},
18651 {"INCALL_RECORD_RX", NULL, "BE_IN"},
18652 {"SLIM0_RX_VI_FB_LCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
18653 {"SLIM0_RX_VI_FB_RCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
18654 {"PRI_MI2S_RX_VI_FB_MUX", "SENARY_TX", "SENARY_TX"},
18655 {"INT4_MI2S_RX_VI_FB_MONO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
18656 {"INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
18657 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_LCH_MUX"},
18658 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_RCH_MUX"},
18659 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_VI_FB_MUX"},
18660 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_MONO_CH_MUX"},
18661 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_STEREO_CH_MUX"},
18662 {"PRI_TDM_TX_0", NULL, "BE_IN"},
18663 {"PRI_TDM_TX_1", NULL, "BE_IN"},
18664 {"PRI_TDM_TX_2", NULL, "BE_IN"},
18665 {"PRI_TDM_TX_3", NULL, "BE_IN"},
18666 {"SEC_TDM_TX_0", NULL, "BE_IN"},
18667 {"SEC_TDM_TX_1", NULL, "BE_IN"},
18668 {"SEC_TDM_TX_2", NULL, "BE_IN"},
18669 {"SEC_TDM_TX_3", NULL, "BE_IN"},
18670 {"TERT_TDM_TX_0", NULL, "BE_IN"},
18671 {"TERT_TDM_TX_1", NULL, "BE_IN"},
18672 {"TERT_TDM_TX_2", NULL, "BE_IN"},
18673 {"TERT_TDM_TX_3", NULL, "BE_IN"},
18674 {"QUAT_TDM_TX_0", NULL, "BE_IN"},
18675 {"QUAT_TDM_TX_1", NULL, "BE_IN"},
18676 {"QUAT_TDM_TX_2", NULL, "BE_IN"},
18677 {"QUAT_TDM_TX_3", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053018678 {"QUIN_TDM_TX_0", NULL, "BE_IN"},
18679 {"QUIN_TDM_TX_1", NULL, "BE_IN"},
18680 {"QUIN_TDM_TX_2", NULL, "BE_IN"},
18681 {"QUIN_TDM_TX_3", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053018682};
18683
18684static int msm_pcm_routing_hw_params(struct snd_pcm_substream *substream,
18685 struct snd_pcm_hw_params *params)
18686{
18687 struct snd_soc_pcm_runtime *rtd = substream->private_data;
18688 unsigned int be_id = rtd->dai_link->id;
18689
18690 if (be_id >= MSM_BACKEND_DAI_MAX) {
18691 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
18692 return -EINVAL;
18693 }
18694
18695 mutex_lock(&routing_lock);
18696 msm_bedais[be_id].sample_rate = params_rate(params);
18697 msm_bedais[be_id].channel = params_channels(params);
18698 msm_bedais[be_id].format = params_format(params);
18699 pr_debug("%s: BE Sample Rate (%d) format (%d) BE id %d\n",
18700 __func__, msm_bedais[be_id].sample_rate,
18701 msm_bedais[be_id].format, be_id);
18702 mutex_unlock(&routing_lock);
18703 return 0;
18704}
18705
18706static int msm_pcm_routing_close(struct snd_pcm_substream *substream)
18707{
18708 struct snd_soc_pcm_runtime *rtd = substream->private_data;
18709 unsigned int be_id = rtd->dai_link->id;
18710 int i, session_type, path_type, topology;
18711 struct msm_pcm_routing_bdai_data *bedai;
18712 struct msm_pcm_routing_fdai_data *fdai;
18713
18714 pr_debug("%s: substream->pcm->id:%s\n",
18715 __func__, substream->pcm->id);
18716
18717 if (be_id >= MSM_BACKEND_DAI_MAX) {
18718 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
18719 return -EINVAL;
18720 }
18721
18722 bedai = &msm_bedais[be_id];
18723 session_type = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ?
18724 0 : 1);
18725 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
18726 path_type = ADM_PATH_PLAYBACK;
18727 else
18728 path_type = ADM_PATH_LIVE_REC;
18729
18730 mutex_lock(&routing_lock);
18731 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
18732 if (!is_mm_lsm_fe_id(i))
18733 continue;
18734 fdai = &fe_dai_map[i][session_type];
18735 if (fdai->strm_id != INVALID_SESSION) {
18736 int idx;
18737 int port_id;
18738 unsigned long copp =
18739 session_copp_map[i][session_type][be_id];
18740 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
18741 if (test_bit(idx, &copp))
18742 break;
18743 fdai->be_srate = bedai->sample_rate;
18744 port_id = bedai->port_id;
18745 topology = adm_get_topology_for_port_copp_idx(port_id,
18746 idx);
18747 adm_close(bedai->port_id, fdai->perf_mode, idx);
18748 pr_debug("%s: copp:%ld,idx bit fe:%d, type:%d,be:%d topology=0x%x\n",
18749 __func__, copp, i, session_type, be_id,
18750 topology);
18751 clear_bit(idx,
18752 &session_copp_map[i][session_type][be_id]);
18753 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
18754 (bedai->passthr_mode[i] == LEGACY_PCM))
18755 msm_pcm_routing_deinit_pp(bedai->port_id,
18756 topology);
18757 }
18758 }
18759
18760 bedai->active = 0;
18761 bedai->sample_rate = 0;
18762 bedai->channel = 0;
18763 for (i = 0; i < MSM_FRONTEND_DAI_MAX; i++) {
18764 if (bedai->passthr_mode[i] != LISTEN)
18765 bedai->passthr_mode[i] = LEGACY_PCM;
18766 }
18767 mutex_unlock(&routing_lock);
18768
18769 return 0;
18770}
18771
18772static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream)
18773{
18774 struct snd_soc_pcm_runtime *rtd = substream->private_data;
18775 unsigned int be_id = rtd->dai_link->id;
18776 int i, path_type, topology;
18777 int session_type = INVALID_SESSION;
18778 struct msm_pcm_routing_bdai_data *bedai;
18779 u32 channels, sample_rate;
18780 uint16_t bits_per_sample = 16, voc_path_type;
18781 struct msm_pcm_routing_fdai_data *fdai;
18782 u32 session_id;
18783 struct media_format_info voc_be_media_format;
18784 bool is_lsm;
18785
18786 pr_debug("%s: substream->pcm->id:%s\n",
18787 __func__, substream->pcm->id);
18788
18789 if (be_id >= MSM_BACKEND_DAI_MAX) {
18790 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
18791 return -EINVAL;
18792 }
18793
18794 bedai = &msm_bedais[be_id];
18795
18796 mutex_lock(&routing_lock);
18797 if (bedai->active == 1)
18798 goto done; /* Ignore prepare if back-end already active */
18799
18800 /* AFE port is not active at this point. However, still
18801 * go ahead setting active flag under the notion that
18802 * QDSP6 is able to handle ADM starting before AFE port
18803 * is started.
18804 */
18805 bedai->active = 1;
18806
18807 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
18808 if (!(is_mm_lsm_fe_id(i) &&
18809 route_check_fe_id_adm_support(i)))
18810 continue;
18811
18812 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
18813 if (bedai->passthr_mode[i] != LEGACY_PCM)
18814 path_type = ADM_PATH_COMPRESSED_RX;
18815 else
18816 path_type = ADM_PATH_PLAYBACK;
18817 session_type = SESSION_TYPE_RX;
18818 } else {
18819 path_type = ADM_PATH_LIVE_REC;
18820 session_type = SESSION_TYPE_TX;
18821 }
18822
18823 is_lsm = (i >= MSM_FRONTEND_DAI_LSM1) &&
18824 (i <= MSM_FRONTEND_DAI_LSM8);
18825 fdai = &fe_dai_map[i][session_type];
18826 if (fdai->strm_id != INVALID_SESSION) {
18827 int app_type, app_type_idx, copp_idx, acdb_dev_id;
18828
18829 if (session_type == SESSION_TYPE_TX &&
18830 fdai->be_srate &&
18831 (fdai->be_srate != bedai->sample_rate)) {
18832 pr_debug("%s: flush strm %d diff BE rates\n",
18833 __func__,
18834 fdai->strm_id);
18835
18836 if (fdai->event_info.event_func)
18837 fdai->event_info.event_func(
18838 MSM_PCM_RT_EVT_BUF_RECFG,
18839 fdai->event_info.priv_data);
18840 fdai->be_srate = 0; /* might not need it */
18841 }
18842 bits_per_sample = msm_routing_get_bit_width(
18843 bedai->format);
18844
18845 app_type =
18846 fe_dai_app_type_cfg[i][session_type][be_id].app_type;
18847 if (app_type && is_lsm) {
18848 app_type_idx =
18849 msm_pcm_routing_get_lsm_app_type_idx(app_type);
18850 sample_rate =
18851 fe_dai_app_type_cfg[i][session_type][be_id]
18852 .sample_rate;
18853 bits_per_sample =
18854 lsm_app_type_cfg[app_type_idx].bit_width;
18855 } else if (app_type) {
18856 app_type_idx =
18857 msm_pcm_routing_get_app_type_idx(app_type);
18858 sample_rate =
18859 fe_dai_app_type_cfg[i][session_type]
18860 [be_id].sample_rate;
18861 bits_per_sample =
18862 app_type_cfg[app_type_idx].bit_width;
18863 } else
18864 sample_rate = bedai->sample_rate;
18865 /*
18866 * check if ADM needs to be configured with different
18867 * channel mapping than backend
18868 */
18869 if (!bedai->adm_override_ch)
18870 channels = bedai->channel;
18871 else
18872 channels = bedai->adm_override_ch;
18873 acdb_dev_id =
18874 fe_dai_app_type_cfg[i][session_type][be_id].acdb_dev_id;
18875 topology = msm_routing_get_adm_topology(i, session_type,
18876 be_id);
18877 copp_idx = adm_open(bedai->port_id, path_type,
18878 sample_rate, channels, topology,
18879 fdai->perf_mode, bits_per_sample,
18880 app_type, acdb_dev_id);
18881 if ((copp_idx < 0) ||
18882 (copp_idx >= MAX_COPPS_PER_PORT)) {
18883 pr_err("%s: adm open failed\n", __func__);
18884 mutex_unlock(&routing_lock);
18885 return -EINVAL;
18886 }
18887 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
18888 __func__, i, session_type, be_id);
18889 set_bit(copp_idx,
18890 &session_copp_map[i][session_type][be_id]);
18891
18892 if (msm_is_resample_needed(
18893 sample_rate,
18894 bedai->sample_rate))
18895 adm_copp_mfc_cfg(
18896 bedai->port_id, copp_idx,
18897 bedai->sample_rate);
18898
18899 msm_pcm_routing_build_matrix(i, session_type, path_type,
18900 fdai->perf_mode,
18901 bedai->passthr_mode[i]);
18902 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
18903 (bedai->passthr_mode[i] == LEGACY_PCM))
18904 msm_pcm_routing_cfg_pp(bedai->port_id, copp_idx,
18905 topology, channels);
18906 }
18907 }
18908
18909 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
18910 session_id = msm_pcm_routing_get_voc_sessionid(i);
18911 if (session_id) {
18912 pr_debug("%s voice session_id: 0x%x\n", __func__,
18913 session_id);
18914
18915 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
18916 voc_path_type = RX_PATH;
18917 else
18918 voc_path_type = TX_PATH;
18919
18920 voc_set_route_flag(session_id, voc_path_type, 1);
18921
18922 memset(&voc_be_media_format, 0,
18923 sizeof(struct media_format_info));
18924
18925 voc_be_media_format.port_id = bedai->port_id;
18926 voc_be_media_format.num_channels = bedai->channel;
18927 voc_be_media_format.sample_rate = bedai->sample_rate;
18928 voc_be_media_format.bits_per_sample = bedai->format;
18929 /* Defaulting this to 1 for voice call usecases */
18930 voc_be_media_format.channel_mapping[0] = 1;
18931
18932 voc_set_device_config(session_id, voc_path_type,
18933 &voc_be_media_format);
18934
18935 if (voc_get_route_flag(session_id, RX_PATH) &&
18936 voc_get_route_flag(session_id, TX_PATH))
18937 voc_enable_device(session_id);
18938 }
18939 }
18940
18941 /* Check if backend is an external ec ref port and set as needed */
18942 if (unlikely(bedai->port_id == voc_get_ext_ec_ref_port_id())) {
18943
18944 memset(&voc_be_media_format, 0,
18945 sizeof(struct media_format_info));
18946
18947 /* Get format info for ec ref port from msm_bedais[] */
18948 voc_be_media_format.port_id = bedai->port_id;
18949 voc_be_media_format.num_channels = bedai->channel;
18950 voc_be_media_format.bits_per_sample = bedai->format;
18951 voc_be_media_format.sample_rate = bedai->sample_rate;
18952 /* Defaulting this to 1 for voice call usecases */
18953 voc_be_media_format.channel_mapping[0] = 1;
18954 voc_set_ext_ec_ref_media_fmt_info(&voc_be_media_format);
18955 pr_debug("%s: EC Ref media format info set to port_id=%d, num_channels=%d, bits_per_sample=%d, sample_rate=%d\n",
18956 __func__, voc_be_media_format.port_id,
18957 voc_be_media_format.num_channels,
18958 voc_be_media_format.bits_per_sample,
18959 voc_be_media_format.sample_rate);
18960 }
18961
18962done:
18963 mutex_unlock(&routing_lock);
18964
18965 return 0;
18966}
18967
18968static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
18969 int fe_id)
18970{
18971 int index, topo_id, be_idx;
18972 unsigned long pp_config = 0;
18973 bool mute_on;
18974 int latency;
18975 bool compr_passthr_mode = true;
18976
18977 pr_debug("%s: port_id %d, copp_idx %d\n", __func__, port_id, copp_idx);
18978
18979 if (port_id != HDMI_RX && port_id != DISPLAY_PORT_RX) {
18980 pr_err("%s: Device pp params on invalid port %d\n",
18981 __func__, port_id);
18982 return -EINVAL;
18983 }
18984
18985 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
18986 if (port_id == msm_bedais[be_idx].port_id)
18987 break;
18988 }
18989
18990 if (be_idx >= MSM_BACKEND_DAI_MAX) {
18991 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
18992 return -EINVAL;
18993 }
18994
18995 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
18996 if (msm_bedais_pp_params[index].port_id == port_id)
18997 break;
18998 }
18999 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
19000 pr_err("%s: Invalid backend pp params index %d\n",
19001 __func__, index);
19002 return -EINVAL;
19003 }
19004
19005 topo_id = adm_get_topology_for_port_copp_idx(port_id, copp_idx);
19006 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY) {
19007 pr_err("%s: Invalid passthrough topology 0x%x\n",
19008 __func__, topo_id);
19009 return -EINVAL;
19010 }
19011
19012 if ((msm_bedais[be_idx].passthr_mode[fe_id] == LEGACY_PCM) ||
19013 (msm_bedais[be_idx].passthr_mode[fe_id] == LISTEN))
19014 compr_passthr_mode = false;
19015
19016 pp_config = msm_bedais_pp_params[index].pp_params_config;
19017 if (test_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config)) {
19018 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
19019 clear_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config);
19020 mute_on = msm_bedais_pp_params[index].mute_on;
19021 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
19022 adm_send_compressed_device_mute(port_id,
19023 copp_idx,
19024 mute_on);
19025 }
19026 if (test_bit(ADM_PP_PARAM_LATENCY_BIT, &pp_config)) {
19027 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
19028 clear_bit(ADM_PP_PARAM_LATENCY_BIT,
19029 &pp_config);
19030 latency = msm_bedais_pp_params[index].latency;
19031 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
19032 adm_send_compressed_device_latency(port_id,
19033 copp_idx,
19034 latency);
19035 }
19036 return 0;
19037}
19038
19039static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
19040 struct snd_ctl_elem_value *ucontrol)
19041{
19042 int pp_id = ucontrol->value.integer.value[0];
19043 int port_id = 0;
19044 int index, be_idx, i, topo_id, idx;
19045 bool mute;
19046 int latency;
19047 bool compr_passthr_mode = true;
19048
19049 pr_debug("%s: pp_id: 0x%x\n", __func__, pp_id);
19050
19051 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
19052 port_id = msm_bedais[be_idx].port_id;
19053 if (port_id == HDMI_RX || port_id == DISPLAY_PORT_RX)
19054 break;
19055 }
19056
19057 if (be_idx >= MSM_BACKEND_DAI_MAX) {
19058 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
19059 return -EINVAL;
19060 }
19061
19062 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
19063 if (msm_bedais_pp_params[index].port_id == port_id)
19064 break;
19065 }
19066 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
19067 pr_err("%s: Invalid pp params backend index %d\n",
19068 __func__, index);
19069 return -EINVAL;
19070 }
19071
19072 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
19073 MSM_FRONTEND_DAI_MM_SIZE) {
19074 if ((msm_bedais[be_idx].passthr_mode[i] == LEGACY_PCM) ||
19075 (msm_bedais[be_idx].passthr_mode[i] == LISTEN))
19076 compr_passthr_mode = false;
19077
19078 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
19079 unsigned long copp =
19080 session_copp_map[i]
19081 [SESSION_TYPE_RX][be_idx];
19082 if (!test_bit(idx, &copp))
19083 continue;
19084 topo_id = adm_get_topology_for_port_copp_idx(port_id,
19085 idx);
19086 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY)
19087 continue;
19088 pr_debug("%s: port: 0x%x, copp %ld, be active: %d, passt: %d\n",
19089 __func__, port_id, copp, msm_bedais[be_idx].active,
19090 msm_bedais[be_idx].passthr_mode[i]);
19091 switch (pp_id) {
19092 case ADM_PP_PARAM_MUTE_ID:
19093 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
19094 mute = ucontrol->value.integer.value[1] ? true : false;
19095 msm_bedais_pp_params[index].mute_on = mute;
19096 set_bit(ADM_PP_PARAM_MUTE_BIT,
19097 &msm_bedais_pp_params[index].pp_params_config);
19098 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
19099 adm_send_compressed_device_mute(port_id,
19100 idx, mute);
19101 break;
19102 case ADM_PP_PARAM_LATENCY_ID:
19103 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
19104 msm_bedais_pp_params[index].latency =
19105 ucontrol->value.integer.value[1];
19106 set_bit(ADM_PP_PARAM_LATENCY_BIT,
19107 &msm_bedais_pp_params[index].pp_params_config);
19108 latency = msm_bedais_pp_params[index].latency =
19109 ucontrol->value.integer.value[1];
19110 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
19111 adm_send_compressed_device_latency(port_id,
19112 idx, latency);
19113 break;
19114 default:
19115 pr_info("%s, device pp param %d not supported\n",
19116 __func__, pp_id);
19117 break;
19118 }
19119 }
19120 }
19121 return 0;
19122}
19123
19124static int msm_routing_get_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
19125 struct snd_ctl_elem_value *ucontrol)
19126{
19127 pr_debug("%s:msm_routing_get_device_pp_params_mixer", __func__);
19128 return 0;
19129}
19130
19131static const struct snd_kcontrol_new device_pp_params_mixer_controls[] = {
19132 SOC_SINGLE_MULTI_EXT("Device PP Params", SND_SOC_NOPM, 0, 0xFFFFFFFF,
19133 0, 3, msm_routing_get_device_pp_params_mixer,
19134 msm_routing_put_device_pp_params_mixer),
19135};
19136
19137static int msm_aptx_dec_license_control_get(struct snd_kcontrol *kcontrol,
19138 struct snd_ctl_elem_value *ucontrol)
19139{
19140 ucontrol->value.integer.value[0] =
19141 core_get_license_status(ASM_MEDIA_FMT_APTX);
19142 pr_debug("%s: status %ld\n", __func__,
19143 ucontrol->value.integer.value[0]);
19144 return 0;
19145}
19146
19147static int msm_aptx_dec_license_control_put(struct snd_kcontrol *kcontrol,
19148 struct snd_ctl_elem_value *ucontrol)
19149{
19150 int32_t status = 0;
19151
19152 status = core_set_license(ucontrol->value.integer.value[0],
19153 APTX_CLASSIC_DEC_LICENSE_ID);
19154 pr_debug("%s: status %d\n", __func__, status);
19155 return status;
19156}
19157
19158static const struct snd_kcontrol_new aptx_dec_license_controls[] = {
19159 SOC_SINGLE_EXT("APTX Dec License", SND_SOC_NOPM, 0,
19160 0xFFFF, 0, msm_aptx_dec_license_control_get,
19161 msm_aptx_dec_license_control_put),
19162};
19163
19164static int msm_routing_be_dai_name_table_info(struct snd_kcontrol *kcontrol,
19165 struct snd_ctl_elem_info *uinfo)
19166{
19167 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
19168 uinfo->count = sizeof(be_dai_name_table);
19169 return 0;
19170}
19171
19172static int msm_routing_be_dai_name_table_tlv_get(struct snd_kcontrol *kcontrol,
19173 unsigned int __user *bytes,
19174 unsigned int size)
19175{
19176 int i;
19177 int ret;
19178
19179 if (size < sizeof(be_dai_name_table)) {
19180 pr_err("%s: invalid size %d requested, returning\n",
19181 __func__, size);
19182 ret = -EINVAL;
19183 goto done;
19184 }
19185
19186 /*
19187 * Fill be_dai_name_table from msm_bedais table to reduce code changes
19188 * needed when adding new backends
19189 */
19190 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
19191 be_dai_name_table[i].be_id = i;
19192 strlcpy(be_dai_name_table[i].be_name,
19193 msm_bedais[i].name,
19194 LPASS_BE_NAME_MAX_LENGTH);
19195 }
19196
19197 ret = copy_to_user(bytes, &be_dai_name_table,
19198 sizeof(be_dai_name_table));
19199 if (ret) {
19200 pr_err("%s: failed to copy be_dai_name_table\n", __func__);
19201 ret = -EFAULT;
19202 }
19203
19204done:
19205 return ret;
19206}
19207
19208static const struct snd_kcontrol_new
19209 msm_routing_be_dai_name_table_mixer_controls[] = {
19210 {
19211 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |
19212 SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK,
19213 .info = msm_routing_be_dai_name_table_info,
19214 .name = "Backend DAI Name Table",
19215 .tlv.c = snd_soc_bytes_tlv_callback,
19216 .private_value = (unsigned long) &(struct soc_bytes_ext) {
19217 .max = sizeof(be_dai_name_table),
19218 .get = msm_routing_be_dai_name_table_tlv_get,
19219 }
19220 },
19221};
19222
19223static int msm_routing_stereo_channel_reverse_control_get(
19224 struct snd_kcontrol *kcontrol,
19225 struct snd_ctl_elem_value *ucontrol)
19226{
19227 ucontrol->value.integer.value[0] = swap_ch;
19228 pr_debug("%s: Swap channel value: %ld\n", __func__,
19229 ucontrol->value.integer.value[0]);
19230 return 0;
19231}
19232
19233static int msm_routing_stereo_channel_reverse_control_put(
19234 struct snd_kcontrol *kcontrol,
19235 struct snd_ctl_elem_value *ucontrol)
19236{
19237 int i, idx, be_index, port_id;
19238 int ret = 0;
19239 unsigned long copp;
19240
19241 pr_debug("%s Swap channel value:%ld\n", __func__,
19242 ucontrol->value.integer.value[0]);
19243
19244 swap_ch = ucontrol->value.integer.value[0];
19245
19246 mutex_lock(&routing_lock);
19247 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
19248 port_id = msm_bedais[be_index].port_id;
19249 if (!msm_bedais[be_index].active)
19250 continue;
19251
19252 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
19253 MSM_FRONTEND_DAI_MM_SIZE) {
19254 copp = session_copp_map[i][SESSION_TYPE_RX][be_index];
19255 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
19256 if (!test_bit(idx, &copp))
19257 continue;
19258
19259 pr_debug("%s: swap channel control of portid:%d, coppid:%d\n",
19260 __func__, port_id, idx);
19261 ret = adm_swap_speaker_channels(
19262 port_id, idx,
19263 msm_bedais[be_index].sample_rate,
19264 swap_ch);
19265 if (ret) {
19266 pr_err("%s:Swap_channel failed, err=%d\n",
19267 __func__, ret);
19268 goto done;
19269 }
19270 }
19271 }
19272 }
19273done:
19274 mutex_unlock(&routing_lock);
19275 return ret;
19276}
19277
19278static const struct snd_kcontrol_new stereo_channel_reverse_control[] = {
19279 SOC_SINGLE_EXT("Swap channel", SND_SOC_NOPM, 0,
19280 1, 0, msm_routing_stereo_channel_reverse_control_get,
19281 msm_routing_stereo_channel_reverse_control_put),
19282};
19283
Vignesh Kulothungan5c109922018-01-24 17:36:18 -080019284static int msm_routing_instance_id_support_info(struct snd_kcontrol *kcontrol,
19285 struct snd_ctl_elem_info *uinfo)
19286{
19287 uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
19288 uinfo->count = 1;
19289 return 0;
19290}
19291
19292static int msm_routing_instance_id_support_put(
19293 struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
19294{
19295 bool supported = ucontrol->value.integer.value[0] ? true : false;
19296
19297 q6common_update_instance_id_support(supported);
19298 return 0;
19299}
19300
19301static int msm_routing_instance_id_support_get(
19302 struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
19303{
19304 bool supported = false;
19305
19306 supported = q6common_is_instance_id_supported();
19307 ucontrol->value.integer.value[0] = supported ? 1 : 0;
19308
19309 return 0;
19310}
19311
19312static const struct snd_kcontrol_new
19313 msm_routing_feature_support_mixer_controls[] = {
19314 {
19315 .access = SNDRV_CTL_ELEM_ACCESS_READ |
19316 SNDRV_CTL_ELEM_ACCESS_WRITE,
19317 .info = msm_routing_instance_id_support_info,
19318 .name = "Instance ID Support",
19319 .put = msm_routing_instance_id_support_put,
19320 .get = msm_routing_instance_id_support_get,
19321 },
19322};
19323
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053019324static const struct snd_pcm_ops msm_routing_pcm_ops = {
19325 .hw_params = msm_pcm_routing_hw_params,
19326 .close = msm_pcm_routing_close,
19327 .prepare = msm_pcm_routing_prepare,
19328};
19329
19330/* Not used but frame seems to require it */
19331static int msm_routing_probe(struct snd_soc_platform *platform)
19332{
19333 snd_soc_dapm_new_controls(&platform->component.dapm, msm_qdsp6_widgets,
19334 ARRAY_SIZE(msm_qdsp6_widgets));
19335 snd_soc_dapm_add_routes(&platform->component.dapm, intercon,
19336 ARRAY_SIZE(intercon));
19337
19338 snd_soc_dapm_new_widgets(platform->component.dapm.card);
19339
19340 snd_soc_add_platform_controls(platform, lsm_controls,
19341 ARRAY_SIZE(lsm_controls));
19342
19343 snd_soc_add_platform_controls(platform, aanc_slim_0_rx_mux,
19344 ARRAY_SIZE(aanc_slim_0_rx_mux));
19345
19346 snd_soc_add_platform_controls(platform, msm_voc_session_controls,
19347 ARRAY_SIZE(msm_voc_session_controls));
19348
19349 snd_soc_add_platform_controls(platform, app_type_cfg_controls,
19350 ARRAY_SIZE(app_type_cfg_controls));
19351
19352 snd_soc_add_platform_controls(platform, lsm_app_type_cfg_controls,
19353 ARRAY_SIZE(lsm_app_type_cfg_controls));
19354
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070019355 snd_soc_add_platform_controls(platform, module_cfg_controls,
19356 ARRAY_SIZE(module_cfg_controls));
19357
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053019358 snd_soc_add_platform_controls(platform,
19359 stereo_to_custom_stereo_controls,
19360 ARRAY_SIZE(stereo_to_custom_stereo_controls));
19361
19362 snd_soc_add_platform_controls(platform, ec_ref_param_controls,
19363 ARRAY_SIZE(ec_ref_param_controls));
19364
19365 snd_soc_add_platform_controls(platform, channel_mixer_controls,
19366 ARRAY_SIZE(channel_mixer_controls));
19367
19368 msm_qti_pp_add_controls(platform);
19369
19370 msm_dts_srs_tm_add_controls(platform);
19371
19372 msm_dolby_dap_add_controls(platform);
19373
19374 snd_soc_add_platform_controls(platform,
19375 use_ds1_or_ds2_controls,
19376 ARRAY_SIZE(use_ds1_or_ds2_controls));
19377
19378 snd_soc_add_platform_controls(platform,
19379 device_pp_params_mixer_controls,
19380 ARRAY_SIZE(device_pp_params_mixer_controls));
19381
19382 snd_soc_add_platform_controls(platform,
19383 msm_routing_be_dai_name_table_mixer_controls,
19384 ARRAY_SIZE(msm_routing_be_dai_name_table_mixer_controls));
19385
19386 snd_soc_add_platform_controls(platform, msm_source_tracking_controls,
19387 ARRAY_SIZE(msm_source_tracking_controls));
19388 snd_soc_add_platform_controls(platform, adm_channel_config_controls,
19389 ARRAY_SIZE(adm_channel_config_controls));
19390
19391 snd_soc_add_platform_controls(platform, aptx_dec_license_controls,
19392 ARRAY_SIZE(aptx_dec_license_controls));
19393 snd_soc_add_platform_controls(platform, stereo_channel_reverse_control,
19394 ARRAY_SIZE(stereo_channel_reverse_control));
Vignesh Kulothungan5c109922018-01-24 17:36:18 -080019395 snd_soc_add_platform_controls(
19396 platform, msm_routing_feature_support_mixer_controls,
19397 ARRAY_SIZE(msm_routing_feature_support_mixer_controls));
19398
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053019399 return 0;
19400}
19401
19402int msm_routing_pcm_new(struct snd_soc_pcm_runtime *runtime)
19403{
19404 return msm_pcm_routing_hwdep_new(runtime, msm_bedais);
19405}
19406
19407void msm_routing_pcm_free(struct snd_pcm *pcm)
19408{
19409 msm_pcm_routing_hwdep_free(pcm);
19410}
19411
19412static struct snd_soc_platform_driver msm_soc_routing_platform = {
19413 .ops = &msm_routing_pcm_ops,
19414 .probe = msm_routing_probe,
19415 .pcm_new = msm_routing_pcm_new,
19416 .pcm_free = msm_routing_pcm_free,
19417};
19418
19419static int msm_routing_pcm_probe(struct platform_device *pdev)
19420{
19421
19422 dev_dbg(&pdev->dev, "dev name %s\n", dev_name(&pdev->dev));
19423 return snd_soc_register_platform(&pdev->dev,
19424 &msm_soc_routing_platform);
19425}
19426
19427static int msm_routing_pcm_remove(struct platform_device *pdev)
19428{
19429 snd_soc_unregister_platform(&pdev->dev);
19430 return 0;
19431}
19432
19433static const struct of_device_id msm_pcm_routing_dt_match[] = {
19434 {.compatible = "qcom,msm-pcm-routing"},
19435 {}
19436};
19437MODULE_DEVICE_TABLE(of, msm_pcm_routing_dt_match);
19438
19439static struct platform_driver msm_routing_pcm_driver = {
19440 .driver = {
19441 .name = "msm-pcm-routing",
19442 .owner = THIS_MODULE,
19443 .of_match_table = msm_pcm_routing_dt_match,
19444 },
19445 .probe = msm_routing_pcm_probe,
19446 .remove = msm_routing_pcm_remove,
19447};
19448
19449int msm_routing_check_backend_enabled(int fedai_id)
19450{
19451 int i;
19452
19453 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
19454 /* bad ID assigned in machine driver */
19455 pr_err("%s: bad MM ID\n", __func__);
19456 return 0;
19457 }
19458 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
19459 if (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))
19460 return msm_bedais[i].active;
19461 }
19462 return 0;
19463}
19464
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053019465static int get_cal_type_index(int32_t cal_type)
19466{
19467 int ret = -EINVAL;
19468
19469 switch (cal_type) {
19470 case ADM_TOPOLOGY_CAL_TYPE:
19471 ret = ADM_TOPOLOGY_CAL_TYPE_IDX;
19472 break;
19473 case ADM_LSM_TOPOLOGY_CAL_TYPE:
19474 ret = ADM_LSM_TOPOLOGY_CAL_TYPE_IDX;
19475 break;
19476 default:
19477 pr_err("%s: Invalid cal type %d\n", __func__, cal_type);
19478 }
19479 return ret;
19480}
19481
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053019482static int msm_routing_set_cal(int32_t cal_type,
19483 size_t data_size, void *data)
19484{
19485 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053019486 int cal_index;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053019487 pr_debug("%s\n", __func__);
19488
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053019489 cal_index = get_cal_type_index(cal_type);
19490 if (cal_index < 0) {
19491 pr_err("%s: Could not get cal index %d\n",
19492 __func__, cal_index);
19493 ret = -EINVAL;
19494 goto done;
19495 }
19496
19497 ret = cal_utils_set_cal(data_size, data, cal_data[cal_index], 0, NULL);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053019498 if (ret < 0) {
19499 pr_err("%s: cal_utils_set_cal failed, ret = %d, cal type = %d!\n",
19500 __func__, ret, cal_type);
19501 ret = -EINVAL;
19502 goto done;
19503 }
19504done:
19505 return ret;
19506}
19507
19508static void msm_routing_delete_cal_data(void)
19509{
19510 pr_debug("%s\n", __func__);
19511
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053019512 cal_utils_destroy_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053019513}
19514
19515static int msm_routing_init_cal_data(void)
19516{
19517 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053019518 struct cal_type_info cal_type_info[] = {
19519 {{ADM_TOPOLOGY_CAL_TYPE,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053019520 {NULL, NULL, NULL,
19521 msm_routing_set_cal, NULL, NULL} },
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053019522 {NULL, NULL, cal_utils_match_buf_num} },
19523
19524 {{ADM_LSM_TOPOLOGY_CAL_TYPE,
19525 {NULL, NULL, NULL,
19526 msm_routing_set_cal, NULL, NULL} },
19527 {NULL, NULL, cal_utils_match_buf_num} },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053019528 };
19529 pr_debug("%s\n", __func__);
19530
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053019531 ret = cal_utils_create_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0],
19532 &cal_type_info[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053019533 if (ret < 0) {
19534 pr_err("%s: could not create cal type!\n",
19535 __func__);
19536 ret = -EINVAL;
19537 goto err;
19538 }
19539
19540 return ret;
19541err:
19542 msm_routing_delete_cal_data();
19543 return ret;
19544}
19545
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053019546int __init msm_soc_routing_platform_init(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053019547{
19548 mutex_init(&routing_lock);
19549 if (msm_routing_init_cal_data())
19550 pr_err("%s: could not init cal data!\n", __func__);
19551
19552 afe_set_routing_callback(
19553 (routing_cb)msm_pcm_get_dev_acdb_id_by_port_id);
19554
19555 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
19556 memset(&last_be_id_configured, 0, sizeof(last_be_id_configured));
19557
19558 return platform_driver_register(&msm_routing_pcm_driver);
19559}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053019560
Asish Bhattacharya5faacb32017-12-04 17:23:15 +053019561void msm_soc_routing_platform_exit(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053019562{
19563 msm_routing_delete_cal_data();
19564 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
19565 mutex_destroy(&routing_lock);
19566 platform_driver_unregister(&msm_routing_pcm_driver);
19567}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053019568
19569MODULE_DESCRIPTION("MSM routing platform driver");
19570MODULE_LICENSE("GPL v2");