asoc: routing: Add support to use compress path for ec ref loopback

Add support to use compress path for mic and ec reference data
capture in single stream. Extend PSPD controls for compress
frontend ids. Update compress driver to use latest ADSP APIs
if available.

Change-Id: Icbf9def07cb0a01542fb3b5cd77e74ab53aec683
Signed-off-by: Chaithanya Krishna Bacharaju <chaithan@codeaurora.org>
This commit is contained in:
Chaithanya Krishna Bacharaju 2019-06-20 11:40:17 +05:30 • committed by Gerrit - the friendly Code Review server
commit 61b2de686e
2 changed files with 864 additions and 74 deletions

View file

@ -1534,9 +1534,16 @@ static int msm_compr_configure_dsp_for_capture(struct snd_compr_stream *cstream)
prtd->codec,
bits_per_sample, true, enc_cfg_id);
} else {
ret = q6asm_open_read_v4(prtd->audio_client,
prtd->codec,
bits_per_sample, false, enc_cfg_id);
if (q6core_get_avcs_api_version_per_service(
APRV2_IDS_SERVICE_ID_ADSP_ASM_V) >=
ADSP_ASM_API_VERSION_V2)
ret = q6asm_open_read_v5(prtd->audio_client,
prtd->codec, bits_per_sample,
false, enc_cfg_id);
else
ret = q6asm_open_read_v4(prtd->audio_client,
prtd->codec, bits_per_sample,
false, enc_cfg_id);
}
if (ret < 0) {
pr_err("%s: q6asm_open_read failed:%d\n",
@ -1607,7 +1614,17 @@ static int msm_compr_configure_dsp_for_capture(struct snd_compr_stream *cstream)
prtd->num_channels, prtd->codec,
(void *)&prtd->codec_param.codec.options.generic);
} else if (prtd->compr_passthr == LEGACY_PCM) {
ret = q6asm_enc_cfg_blk_pcm_format_support_v4(prtd->audio_client,
if (q6core_get_avcs_api_version_per_service(
APRV2_IDS_SERVICE_ID_ADSP_ASM_V) >=
ADSP_ASM_API_VERSION_V2)
ret = q6asm_enc_cfg_blk_pcm_format_support_v5(
prtd->audio_client,
prtd->sample_rate, prtd->num_channels,
bits_per_sample, sample_word_size,
ASM_LITTLE_ENDIAN, DEFAULT_QF);
else
ret = q6asm_enc_cfg_blk_pcm_format_support_v4(
prtd->audio_client,
prtd->sample_rate, prtd->num_channels,
bits_per_sample, sample_word_size,
ASM_LITTLE_ENDIAN, DEFAULT_QF);

View file

@ -3440,6 +3440,14 @@ static SOC_ENUM_SINGLE_DECL(mm3_channel_mux,
SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA3, ch_mixer);
static SOC_ENUM_SINGLE_DECL(mm4_channel_mux,
SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA4, ch_mixer);
static SOC_ENUM_SINGLE_DECL(mm18_channel_mux,
SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA18, ch_mixer);
static SOC_ENUM_SINGLE_DECL(mm19_channel_mux,
SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA19, ch_mixer);
static SOC_ENUM_SINGLE_DECL(mm28_channel_mux,
SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA28, ch_mixer);
static SOC_ENUM_SINGLE_DECL(mm29_channel_mux,
SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA29, ch_mixer);
static SOC_ENUM_DOUBLE_DECL(mm1_ch1_enum,
SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 0, be_name);
@ -3457,6 +3465,22 @@ static SOC_ENUM_DOUBLE_DECL(mm1_ch7_enum,
SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 6, be_name);
static SOC_ENUM_DOUBLE_DECL(mm1_ch8_enum,
SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 7, be_name);
static SOC_ENUM_DOUBLE_DECL(mm18_ch1_enum,
SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA18, 0, be_name);
static SOC_ENUM_DOUBLE_DECL(mm18_ch2_enum,
SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA18, 1, be_name);
static SOC_ENUM_DOUBLE_DECL(mm19_ch1_enum,
SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA19, 0, be_name);
static SOC_ENUM_DOUBLE_DECL(mm19_ch2_enum,
SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA19, 1, be_name);
static SOC_ENUM_DOUBLE_DECL(mm28_ch1_enum,
SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA28, 0, be_name);
static SOC_ENUM_DOUBLE_DECL(mm28_ch2_enum,
SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA28, 1, be_name);
static SOC_ENUM_DOUBLE_DECL(mm29_ch1_enum,
SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA29, 0, be_name);
static SOC_ENUM_DOUBLE_DECL(mm29_ch2_enum,
SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA29, 1, be_name);
static int msm_pcm_get_ctl_enum_info(struct snd_ctl_elem_info *uinfo,
unsigned int channels,
@ -3758,6 +3782,22 @@ static const struct snd_kcontrol_new channel_mixer_controls[] = {
MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
msm_pcm_get_channel_rule_index,
msm_pcm_put_channel_rule_index),
SOC_SINGLE_EXT("MultiMedia18 Channel Rule", SND_SOC_NOPM,
MSM_FRONTEND_DAI_MULTIMEDIA18, 8, 0,
msm_pcm_get_channel_rule_index,
msm_pcm_put_channel_rule_index),
SOC_SINGLE_EXT("MultiMedia19 Channel Rule", SND_SOC_NOPM,
MSM_FRONTEND_DAI_MULTIMEDIA19, 8, 0,
msm_pcm_get_channel_rule_index,
msm_pcm_put_channel_rule_index),
SOC_SINGLE_EXT("MultiMedia28 Channel Rule", SND_SOC_NOPM,
MSM_FRONTEND_DAI_MULTIMEDIA28, 8, 0,
msm_pcm_get_channel_rule_index,
msm_pcm_put_channel_rule_index),
SOC_SINGLE_EXT("MultiMedia29 Channel Rule", SND_SOC_NOPM,
MSM_FRONTEND_DAI_MULTIMEDIA29, 8, 0,
msm_pcm_get_channel_rule_index,
msm_pcm_put_channel_rule_index),
SOC_SINGLE_EXT("MultiMedia1 Channels", SND_SOC_NOPM,
MSM_FRONTEND_DAI_MULTIMEDIA1, 14, 0,
@ -3783,6 +3823,22 @@ static const struct snd_kcontrol_new channel_mixer_controls[] = {
MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
msm_pcm_get_out_chs,
msm_pcm_put_out_chs),
SOC_SINGLE_EXT("MultiMedia18 Channels", SND_SOC_NOPM,
MSM_FRONTEND_DAI_MULTIMEDIA18, 14, 0,
msm_pcm_get_out_chs,
msm_pcm_put_out_chs),
SOC_SINGLE_EXT("MultiMedia19 Channels", SND_SOC_NOPM,
MSM_FRONTEND_DAI_MULTIMEDIA19, 14, 0,
msm_pcm_get_out_chs,
msm_pcm_put_out_chs),
SOC_SINGLE_EXT("MultiMedia28 Channels", SND_SOC_NOPM,
MSM_FRONTEND_DAI_MULTIMEDIA28, 14, 0,
msm_pcm_get_out_chs,
msm_pcm_put_out_chs),
SOC_SINGLE_EXT("MultiMedia29 Channels", SND_SOC_NOPM,
MSM_FRONTEND_DAI_MULTIMEDIA29, 14, 0,
msm_pcm_get_out_chs,
msm_pcm_put_out_chs),
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
@ -3822,6 +3878,42 @@ static const struct snd_kcontrol_new channel_mixer_controls[] = {
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia18 Channel Mixer",
.info = msm_pcm_channel_mixer_info,
.get = msm_pcm_channel_mixer_get,
.put = msm_pcm_channel_mixer_put,
.private_value = (unsigned long)&(mm18_channel_mux)
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia19 Channel Mixer",
.info = msm_pcm_channel_mixer_info,
.get = msm_pcm_channel_mixer_get,
.put = msm_pcm_channel_mixer_put,
.private_value = (unsigned long)&(mm19_channel_mux)
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia28 Channel Mixer",
.info = msm_pcm_channel_mixer_info,
.get = msm_pcm_channel_mixer_get,
.put = msm_pcm_channel_mixer_put,
.private_value = (unsigned long)&(mm28_channel_mux)
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia29 Channel Mixer",
.info = msm_pcm_channel_mixer_info,
.get = msm_pcm_channel_mixer_get,
.put = msm_pcm_channel_mixer_put,
.private_value = (unsigned long)&(mm29_channel_mux)
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia1 Output Channel1",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
@ -4012,6 +4104,566 @@ static const struct snd_kcontrol_new channel_mixer_controls[] = {
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia18 Output Channel1",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA18, .rshift = 0,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia18 Output Channel2",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA18, .rshift = 1, }
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia18 Output Channel3",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA18, .rshift = 2,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia18 Output Channel4",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA18, .rshift = 3,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia18 Output Channel5",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA18, .rshift = 4,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia18 Output Channel6",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA18, .rshift = 5,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia18 Output Channel7",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA18, .rshift = 6,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia18 Output Channel8",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA18, .rshift = 7,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia18 Output Channel9",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA18, .rshift = 8,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia18 Output Channel10",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA18, .rshift = 9,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia18 Output Channel11",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA18, .rshift = 10,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia18 Output Channel12",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA18, .rshift = 11,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia18 Output Channel13",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA18, .rshift = 12,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia18 Output Channel14",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA18, .rshift = 13,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia19 Output Channel1",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA19, .rshift = 0,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia19 Output Channel2",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA19, .rshift = 1, }
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia19 Output Channel3",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA19, .rshift = 2,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia19 Output Channel4",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA19, .rshift = 3,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia19 Output Channel5",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA19, .rshift = 4,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia19 Output Channel6",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA19, .rshift = 5,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia19 Output Channel7",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA19, .rshift = 6,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia19 Output Channel8",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA19, .rshift = 7,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia19 Output Channel9",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA19, .rshift = 8,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia19 Output Channel10",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA19, .rshift = 9,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia19 Output Channel11",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA19, .rshift = 10,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia19 Output Channel12",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA19, .rshift = 11,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia19 Output Channel13",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA19, .rshift = 12,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia19 Output Channel14",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA19, .rshift = 13,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia28 Output Channel1",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA28, .rshift = 0,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia28 Output Channel2",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA28, .rshift = 1, }
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia28 Output Channel3",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA28, .rshift = 2,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia28 Output Channel4",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA28, .rshift = 3,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia28 Output Channel5",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA28, .rshift = 4,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia28 Output Channel6",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA28, .rshift = 5,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia28 Output Channel7",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA28, .rshift = 6,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia28 Output Channel8",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA28, .rshift = 7,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia28 Output Channel9",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA28, .rshift = 8,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia28 Output Channel10",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA28, .rshift = 9,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia28 Output Channel11",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA28, .rshift = 10,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia28 Output Channel12",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA28, .rshift = 11,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia28 Output Channel13",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA28, .rshift = 12,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia28 Output Channel14",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA28, .rshift = 13,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia29 Output Channel1",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA29, .rshift = 0,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia29 Output Channel2",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA29, .rshift = 1, }
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia29 Output Channel3",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA29, .rshift = 2,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia29 Output Channel4",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA29, .rshift = 3,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia29 Output Channel5",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA29, .rshift = 4,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia29 Output Channel6",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA29, .rshift = 5,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia29 Output Channel7",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA29, .rshift = 6,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia29 Output Channel8",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA29, .rshift = 7,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia29 Output Channel9",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA29, .rshift = 8,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia29 Output Channel10",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA29, .rshift = 9,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia29 Output Channel11",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA29, .rshift = 10,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia29 Output Channel12",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA29, .rshift = 11,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia29 Output Channel13",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA29, .rshift = 12,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia29 Output Channel14",
.info = msm_pcm_channel_weight_info,
.get = msm_pcm_channel_weight_get,
.put = msm_pcm_channel_weight_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA29, .rshift = 13,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia1 Channel1",
.info = msm_pcm_channel_input_be_info,
.get = msm_pcm_channel_input_be_get,
@ -4084,6 +4736,78 @@ static const struct snd_kcontrol_new channel_mixer_controls[] = {
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia18 Channel1",
.info = msm_pcm_channel_input_be_info,
.get = msm_pcm_channel_input_be_get,
.put = msm_pcm_channel_input_be_put,
.private_value = (unsigned long)&(mm18_ch1_enum)
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia18 Channel2",
.info = msm_pcm_channel_input_be_info,
.get = msm_pcm_channel_input_be_get,
.put = msm_pcm_channel_input_be_put,
.private_value = (unsigned long)&(mm18_ch2_enum)
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia19 Channel1",
.info = msm_pcm_channel_input_be_info,
.get = msm_pcm_channel_input_be_get,
.put = msm_pcm_channel_input_be_put,
.private_value = (unsigned long)&(mm19_ch1_enum)
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia19 Channel2",
.info = msm_pcm_channel_input_be_info,
.get = msm_pcm_channel_input_be_get,
.put = msm_pcm_channel_input_be_put,
.private_value = (unsigned long)&(mm19_ch2_enum)
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia28 Channel1",
.info = msm_pcm_channel_input_be_info,
.get = msm_pcm_channel_input_be_get,
.put = msm_pcm_channel_input_be_put,
.private_value = (unsigned long)&(mm28_ch1_enum)
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia28 Channel2",
.info = msm_pcm_channel_input_be_info,
.get = msm_pcm_channel_input_be_get,
.put = msm_pcm_channel_input_be_put,
.private_value = (unsigned long)&(mm28_ch2_enum)
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia29 Channel1",
.info = msm_pcm_channel_input_be_info,
.get = msm_pcm_channel_input_be_get,
.put = msm_pcm_channel_input_be_put,
.private_value = (unsigned long)&(mm29_ch1_enum)
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia29 Channel2",
.info = msm_pcm_channel_input_be_info,
.get = msm_pcm_channel_input_be_get,
.put = msm_pcm_channel_input_be_put,
.private_value = (unsigned long)&(mm29_ch2_enum)
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia1 Output Channel Map",
.info = msm_pcm_channel_output_map_info,
.get = msm_pcm_channel_output_map_get,
@ -4141,6 +4865,46 @@ static const struct snd_kcontrol_new channel_mixer_controls[] = {
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA6,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia18 Output Channel Map",
.info = msm_pcm_channel_output_map_info,
.get = msm_pcm_channel_output_map_get,
.put = msm_pcm_channel_output_map_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA18,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia19 Output Channel Map",
.info = msm_pcm_channel_output_map_info,
.get = msm_pcm_channel_output_map_get,
.put = msm_pcm_channel_output_map_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA19,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia28 Output Channel Map",
.info = msm_pcm_channel_output_map_info,
.get = msm_pcm_channel_output_map_get,
.put = msm_pcm_channel_output_map_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA28,}
},
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
.name = "MultiMedia29 Output Channel Map",
.info = msm_pcm_channel_output_map_info,
.get = msm_pcm_channel_output_map_get,
.put = msm_pcm_channel_output_map_put,
.private_value = (unsigned long)&(struct soc_multi_mixer_control)
{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA29,}
},
};
static int msm_ec_ref_ch_get(struct snd_kcontrol *kcontrol,
@ -23247,6 +24011,7 @@ static const struct snd_soc_dapm_route intercon[] = {
{"PRI_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
{"PRI_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
{"PRI_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
{"PRI_MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
{"PRI_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
{"PRI_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
{"PRI_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
@ -24492,6 +25257,8 @@ static const struct snd_soc_dapm_route intercon[] = {
{"MultiMedia18 Mixer", "TX_CDC_DMA_TX_4", "TX_CDC_DMA_TX_4"},
{"MultiMedia18 Mixer", "TX_CDC_DMA_TX_5", "TX_CDC_DMA_TX_5"},
{"MultiMedia18 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
{"MultiMedia18 Mixer", "VA_CDC_DMA_TX_0", "VA_CDC_DMA_TX_0"},
{"MultiMedia18 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"},
{"MultiMedia19 Mixer", "TX_CDC_DMA_TX_0", "TX_CDC_DMA_TX_0"},
{"MultiMedia19 Mixer", "TX_CDC_DMA_TX_1", "TX_CDC_DMA_TX_1"},
@ -24500,6 +25267,8 @@ static const struct snd_soc_dapm_route intercon[] = {
{"MultiMedia19 Mixer", "TX_CDC_DMA_TX_4", "TX_CDC_DMA_TX_4"},
{"MultiMedia19 Mixer", "TX_CDC_DMA_TX_5", "TX_CDC_DMA_TX_5"},
{"MultiMedia19 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
{"MultiMedia19 Mixer", "VA_CDC_DMA_TX_0", "VA_CDC_DMA_TX_0"},
{"MultiMedia19 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"},
{"MultiMedia28 Mixer", "TX_CDC_DMA_TX_0", "TX_CDC_DMA_TX_0"},
{"MultiMedia28 Mixer", "TX_CDC_DMA_TX_1", "TX_CDC_DMA_TX_1"},
@ -24508,6 +25277,8 @@ static const struct snd_soc_dapm_route intercon[] = {
{"MultiMedia28 Mixer", "TX_CDC_DMA_TX_4", "TX_CDC_DMA_TX_4"},
{"MultiMedia28 Mixer", "TX_CDC_DMA_TX_5", "TX_CDC_DMA_TX_5"},
{"MultiMedia28 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
{"MultiMedia28 Mixer", "VA_CDC_DMA_TX_0", "VA_CDC_DMA_TX_0"},
{"MultiMedia28 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"},
{"MultiMedia29 Mixer", "TX_CDC_DMA_TX_0", "TX_CDC_DMA_TX_0"},
{"MultiMedia29 Mixer", "TX_CDC_DMA_TX_1", "TX_CDC_DMA_TX_1"},
@ -24516,6 +25287,8 @@ static const struct snd_soc_dapm_route intercon[] = {
{"MultiMedia29 Mixer", "TX_CDC_DMA_TX_4", "TX_CDC_DMA_TX_4"},
{"MultiMedia29 Mixer", "TX_CDC_DMA_TX_5", "TX_CDC_DMA_TX_5"},
{"MultiMedia29 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
{"MultiMedia29 Mixer", "VA_CDC_DMA_TX_0", "VA_CDC_DMA_TX_0"},
{"MultiMedia29 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"},
{"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
{"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},