|
@@ -1,4 +1,4 @@
|
|
|
-/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
|
|
|
+/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
|
|
|
*
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
* it under the terms of the GNU General Public License version 2 and
|
|
@@ -643,6 +643,12 @@ static struct msm_pcm_routing_fdai_data
|
|
|
{{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
|
|
|
{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
|
|
|
/* MULTIMEDIA20 */
|
|
|
+ {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
|
|
|
+ {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
|
|
|
+ /* MULTIMEDIA28 */
|
|
|
+ {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
|
|
|
+ {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
|
|
|
+ /* MULTIMEDIA29 */
|
|
|
{{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
|
|
|
{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
|
|
|
/* VOIP */
|
|
@@ -3727,6 +3733,16 @@ static const struct snd_kcontrol_new ext_ec_ref_mux_ul19 =
|
|
|
msm_route_ec_ref_rx_enum[0],
|
|
|
msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
|
|
|
|
|
|
+static const struct snd_kcontrol_new ext_ec_ref_mux_ul28 =
|
|
|
+ SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL28 MUX Mux",
|
|
|
+ msm_route_ec_ref_rx_enum[0],
|
|
|
+ msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
|
|
|
+
|
|
|
+static const struct snd_kcontrol_new ext_ec_ref_mux_ul29 =
|
|
|
+ SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL29 MUX Mux",
|
|
|
+ msm_route_ec_ref_rx_enum[0],
|
|
|
+ msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
|
|
|
+
|
|
|
static int msm_routing_ext_ec_get(struct snd_kcontrol *kcontrol,
|
|
|
struct snd_ctl_elem_value *ucontrol)
|
|
|
{
|
|
@@ -3870,6 +3886,12 @@ static const struct snd_kcontrol_new pri_i2s_rx_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_I2S_RX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_PRI_I2S_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_PRI_I2S_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
};
|
|
|
|
|
|
static const struct snd_kcontrol_new sec_i2s_rx_mixer_controls[] = {
|
|
@@ -3930,6 +3952,12 @@ static const struct snd_kcontrol_new sec_i2s_rx_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_I2S_RX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SEC_I2S_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SEC_I2S_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
};
|
|
|
|
|
|
static const struct snd_kcontrol_new spdif_rx_mixer_controls[] = {
|
|
@@ -3990,7 +4018,12 @@ static const struct snd_kcontrol_new spdif_rx_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SPDIF_RX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
|
-
|
|
|
+ SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SPDIF_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SPDIF_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
};
|
|
|
|
|
|
static const struct snd_kcontrol_new slimbus_2_rx_mixer_controls[] = {
|
|
@@ -4102,6 +4135,12 @@ static const struct snd_kcontrol_new slimbus_5_rx_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_5_RX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SLIMBUS_5_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SLIMBUS_5_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
};
|
|
|
|
|
|
static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = {
|
|
@@ -4162,6 +4201,12 @@ static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_0_RX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SLIMBUS_0_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SLIMBUS_0_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
};
|
|
|
|
|
|
static const struct snd_kcontrol_new mi2s_rx_mixer_controls[] = {
|
|
@@ -4222,6 +4267,12 @@ static const struct snd_kcontrol_new mi2s_rx_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_MI2S_RX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_MI2S_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_MI2S_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
};
|
|
|
|
|
|
static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
|
|
@@ -4282,6 +4333,12 @@ static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
};
|
|
|
|
|
|
static const struct snd_kcontrol_new quinary_mi2s_rx_mixer_controls[] = {
|
|
@@ -4342,6 +4399,13 @@ static const struct snd_kcontrol_new quinary_mi2s_rx_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+
|
|
|
};
|
|
|
|
|
|
static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = {
|
|
@@ -4396,6 +4460,12 @@ static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
};
|
|
|
|
|
|
static const struct snd_kcontrol_new secondary_mi2s_rx2_mixer_controls[] = {
|
|
@@ -4462,6 +4532,12 @@ static const struct snd_kcontrol_new secondary_mi2s_rx_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
};
|
|
|
|
|
|
static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
|
|
@@ -4522,6 +4598,13 @@ static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_MI2S_RX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_PRI_MI2S_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_PRI_MI2S_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+
|
|
|
};
|
|
|
|
|
|
static const struct snd_kcontrol_new int0_mi2s_rx_mixer_controls[] = {
|
|
@@ -4684,6 +4767,12 @@ static const struct snd_kcontrol_new hdmi_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_HDMI_RX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_HDMI_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_HDMI_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
};
|
|
|
|
|
|
static const struct snd_kcontrol_new display_port_mixer_controls[] = {
|
|
@@ -4994,6 +5083,12 @@ static const struct snd_kcontrol_new int_bt_sco_rx_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_BT_SCO_RX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_INT_BT_SCO_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_INT_BT_SCO_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
};
|
|
|
|
|
|
static const struct snd_kcontrol_new int_bt_a2dp_rx_mixer_controls[] = {
|
|
@@ -5105,6 +5200,12 @@ static const struct snd_kcontrol_new int_fm_rx_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_FM_RX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_INT_FM_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_INT_FM_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
};
|
|
|
|
|
|
static const struct snd_kcontrol_new afe_pcm_rx_mixer_controls[] = {
|
|
@@ -5165,6 +5266,12 @@ static const struct snd_kcontrol_new afe_pcm_rx_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AFE_PCM_RX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_AFE_PCM_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_AFE_PCM_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
};
|
|
|
|
|
|
static const struct snd_kcontrol_new auxpcm_rx_mixer_controls[] = {
|
|
@@ -5225,6 +5332,12 @@ static const struct snd_kcontrol_new auxpcm_rx_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AUXPCM_RX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_AUXPCM_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_AUXPCM_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
};
|
|
|
|
|
|
static const struct snd_kcontrol_new sec_auxpcm_rx_mixer_controls[] = {
|
|
@@ -5285,6 +5398,12 @@ static const struct snd_kcontrol_new sec_auxpcm_rx_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
};
|
|
|
|
|
|
static const struct snd_kcontrol_new tert_auxpcm_rx_mixer_controls[] = {
|
|
@@ -7830,6 +7949,9 @@ static const struct snd_kcontrol_new mmul17_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
@@ -7854,6 +7976,9 @@ static const struct snd_kcontrol_new mmul18_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
@@ -7881,6 +8006,9 @@ static const struct snd_kcontrol_new mmul19_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
|
|
|
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
|
|
|
msm_routing_put_audio_mixer),
|
|
@@ -7976,6 +8104,60 @@ static const struct snd_kcontrol_new mmul20_mixer_controls[] = {
|
|
|
msm_routing_put_audio_mixer),
|
|
|
};
|
|
|
|
|
|
+static const struct snd_kcontrol_new mmul28_mixer_controls[] = {
|
|
|
+ SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+};
|
|
|
+
|
|
|
+static const struct snd_kcontrol_new mmul29_mixer_controls[] = {
|
|
|
+ SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+ SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
|
|
|
+ MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
|
|
|
+ msm_routing_put_audio_mixer),
|
|
|
+};
|
|
|
+
|
|
|
static const struct snd_kcontrol_new pri_rx_voice_mixer_controls[] = {
|
|
|
SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_I2S_RX,
|
|
|
MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
|
|
@@ -13170,6 +13352,10 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
|
|
|
mmul19_mixer_controls, ARRAY_SIZE(mmul19_mixer_controls)),
|
|
|
SND_SOC_DAPM_MIXER("MultiMedia20 Mixer", SND_SOC_NOPM, 0, 0,
|
|
|
mmul20_mixer_controls, ARRAY_SIZE(mmul20_mixer_controls)),
|
|
|
+ SND_SOC_DAPM_MIXER("MultiMedia28 Mixer", SND_SOC_NOPM, 0, 0,
|
|
|
+ mmul28_mixer_controls, ARRAY_SIZE(mmul28_mixer_controls)),
|
|
|
+ SND_SOC_DAPM_MIXER("MultiMedia29 Mixer", SND_SOC_NOPM, 0, 0,
|
|
|
+ mmul29_mixer_controls, ARRAY_SIZE(mmul29_mixer_controls)),
|
|
|
SND_SOC_DAPM_MIXER("AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
|
|
|
auxpcm_rx_mixer_controls, ARRAY_SIZE(auxpcm_rx_mixer_controls)),
|
|
|
SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
|
|
@@ -13752,14 +13938,27 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|
|
{"MultiMedia17 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
|
|
|
{"MultiMedia18 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
|
|
|
{"MultiMedia19 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
|
|
|
+ {"MultiMedia28 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
|
|
|
+ {"MultiMedia29 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
|
|
|
{"MultiMedia8 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
|
|
|
{"MultiMedia2 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
|
|
|
{"MultiMedia4 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
|
|
|
{"MultiMedia17 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
|
|
|
{"MultiMedia18 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
|
|
|
{"MultiMedia19 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
|
|
|
+ {"MultiMedia28 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
|
|
|
+ {"MultiMedia29 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
|
|
|
{"MultiMedia8 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
|
|
|
+ {"MultiMedia17 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
|
|
|
+ {"MultiMedia18 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
|
|
|
+ {"MultiMedia19 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
|
|
|
+ {"MultiMedia28 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
|
|
|
+ {"MultiMedia29 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
|
|
|
+ {"MultiMedia17 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
|
|
|
{"MultiMedia18 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
|
|
|
+ {"MultiMedia19 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
|
|
|
+ {"MultiMedia28 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
|
|
|
+ {"MultiMedia29 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
|
|
|
{"MultiMedia8 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
|
|
|
{"MultiMedia3 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
|
|
|
{"MultiMedia5 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
|
|
@@ -14450,6 +14649,11 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|
|
{"MultiMedia5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
|
|
|
{"MultiMedia10 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
|
|
|
{"MultiMedia16 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
|
|
|
+ {"MultiMedia17 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
|
|
|
+ {"MultiMedia18 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
|
|
|
+ {"MultiMedia19 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
|
|
|
+ {"MultiMedia28 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
|
|
|
+ {"MultiMedia29 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
|
|
|
{"MultiMedia6 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
|
|
|
{"MultiMedia6 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
|
|
|
{"MultiMedia6 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
|
|
@@ -14757,6 +14961,8 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|
|
{"MultiMedia17 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
|
|
|
{"MultiMedia18 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
|
|
|
{"MultiMedia19 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
|
|
|
+ {"MultiMedia28 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
|
|
|
+ {"MultiMedia29 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
|
|
|
{"MultiMedia5 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
|
|
|
{"MultiMedia8 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
|
|
|
{"MultiMedia16 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
|
|
@@ -14766,6 +14972,8 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|
|
{"MultiMedia17 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
|
|
|
{"MultiMedia18 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
|
|
|
{"MultiMedia19 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
|
|
|
+ {"MultiMedia28 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
|
|
|
+ {"MultiMedia29 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
|
|
|
{"MultiMedia5 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
|
|
|
{"MultiMedia6 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
|
|
|
{"MultiMedia8 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
|
|
@@ -14777,6 +14985,8 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|
|
{"MultiMedia17 Mixer", "AFE_PCM_TX", "PCM_TX"},
|
|
|
{"MultiMedia18 Mixer", "AFE_PCM_TX", "PCM_TX"},
|
|
|
{"MultiMedia19 Mixer", "AFE_PCM_TX", "PCM_TX"},
|
|
|
+ {"MultiMedia28 Mixer", "AFE_PCM_TX", "PCM_TX"},
|
|
|
+ {"MultiMedia29 Mixer", "AFE_PCM_TX", "PCM_TX"},
|
|
|
{"MultiMedia5 Mixer", "AFE_PCM_TX", "PCM_TX"},
|
|
|
{"MultiMedia8 Mixer", "AFE_PCM_TX", "PCM_TX"},
|
|
|
{"MultiMedia16 Mixer", "AFE_PCM_TX", "PCM_TX"},
|
|
@@ -14795,6 +15005,8 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|
|
{"MM_UL18", NULL, "MultiMedia18 Mixer"},
|
|
|
{"MM_UL19", NULL, "MultiMedia19 Mixer"},
|
|
|
{"MM_UL20", NULL, "MultiMedia20 Mixer"},
|
|
|
+ {"MM_UL28", NULL, "MultiMedia28 Mixer"},
|
|
|
+ {"MM_UL29", NULL, "MultiMedia29 Mixer"},
|
|
|
|
|
|
{"AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
|
|
|
{"AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
|
|
@@ -15127,6 +15339,15 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|
|
{"AUDIO_REF_EC_UL19 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
|
|
|
{"AUDIO_REF_EC_UL19 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
|
|
|
|
|
|
+ {"AUDIO_REF_EC_UL28 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
|
|
|
+ {"AUDIO_REF_EC_UL28 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
|
|
|
+ {"AUDIO_REF_EC_UL28 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
|
|
|
+ {"AUDIO_REF_EC_UL28 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
|
|
|
+
|
|
|
+ {"AUDIO_REF_EC_UL29 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
|
|
|
+ {"AUDIO_REF_EC_UL29 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
|
|
|
+ {"AUDIO_REF_EC_UL29 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
|
|
|
+ {"AUDIO_REF_EC_UL29 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
|
|
|
|
|
|
{"LSM1_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
|
|
|
{"LSM2_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
|
|
@@ -15150,6 +15371,8 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|
|
{"MM_UL17", NULL, "AUDIO_REF_EC_UL17 MUX"},
|
|
|
{"MM_UL18", NULL, "AUDIO_REF_EC_UL18 MUX"},
|
|
|
{"MM_UL19", NULL, "AUDIO_REF_EC_UL19 MUX"},
|
|
|
+ {"MM_UL28", NULL, "AUDIO_REF_EC_UL28 MUX"},
|
|
|
+ {"MM_UL29", NULL, "AUDIO_REF_EC_UL29 MUX"},
|
|
|
|
|
|
{"VoiceMMode1_Tx Mixer", "PRI_TX_MMode1", "PRI_I2S_TX"},
|
|
|
{"VoiceMMode1_Tx Mixer", "PRI_MI2S_TX_MMode1", "PRI_MI2S_TX"},
|