diff options
-rw-r--r-- | sound/soc/msm/qdsp6v2/msm-pcm-routing-v2.c | 3 | ||||
-rw-r--r-- | sound/soc/msm/qdsp6v2/msm-qti-pp-config.c | 35 |
2 files changed, 38 insertions, 0 deletions
diff --git a/sound/soc/msm/qdsp6v2/msm-pcm-routing-v2.c b/sound/soc/msm/qdsp6v2/msm-pcm-routing-v2.c index 658ace327283..312eda29e8a0 100644 --- a/sound/soc/msm/qdsp6v2/msm-pcm-routing-v2.c +++ b/sound/soc/msm/qdsp6v2/msm-pcm-routing-v2.c @@ -11642,11 +11642,14 @@ static const struct snd_soc_dapm_route intercon[] = { {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Audio Mixer"}, {"SLIMBUS_7_RX Audio Mixer", "MultiMedia1", "MM_DL1"}, + {"SLIMBUS_7_RX Audio Mixer", "MultiMedia2", "MM_DL2"}, {"SLIMBUS_7_RX Audio Mixer", "MultiMedia3", "MM_DL3"}, {"SLIMBUS_7_RX Audio Mixer", "MultiMedia4", "MM_DL4"}, {"SLIMBUS_7_RX Audio Mixer", "MultiMedia5", "MM_DL5"}, + {"SLIMBUS_7_RX Audio Mixer", "MultiMedia6", "MM_DL6"}, {"SLIMBUS_7_RX Audio Mixer", "MultiMedia7", "MM_DL7"}, {"SLIMBUS_7_RX Audio Mixer", "MultiMedia8", "MM_DL8"}, + {"SLIMBUS_7_RX Audio Mixer", "MultiMedia9", "MM_DL9"}, {"SLIMBUS_7_RX Audio Mixer", "MultiMedia10", "MM_DL10"}, {"SLIMBUS_7_RX Audio Mixer", "MultiMedia11", "MM_DL11"}, {"SLIMBUS_7_RX Audio Mixer", "MultiMedia12", "MM_DL12"}, diff --git a/sound/soc/msm/qdsp6v2/msm-qti-pp-config.c b/sound/soc/msm/qdsp6v2/msm-qti-pp-config.c index 24c47f764a7d..6f463c079f19 100644 --- a/sound/soc/msm/qdsp6v2/msm-qti-pp-config.c +++ b/sound/soc/msm/qdsp6v2/msm-qti-pp-config.c @@ -403,6 +403,7 @@ static int msm_afe_lb_vol_ctrl; static int msm_afe_sec_mi2s_lb_vol_ctrl; static int msm_afe_tert_mi2s_lb_vol_ctrl; static int msm_afe_quat_mi2s_lb_vol_ctrl; +static int msm_afe_slimbus_7_lb_vol_ctrl; static int msm_afe_slimbus_8_lb_vol_ctrl; static const DECLARE_TLV_DB_LINEAR(fm_rx_vol_gain, 0, INT_RX_VOL_MAX_STEPS); static const DECLARE_TLV_DB_LINEAR(afe_lb_vol_gain, 0, INT_RX_VOL_MAX_STEPS); @@ -475,6 +476,29 @@ static int msm_qti_pp_set_tert_mi2s_lb_vol_mixer(struct snd_kcontrol *kcontrol, return 0; } +static int msm_qti_pp_get_slimbus_7_lb_vol_mixer(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + ucontrol->value.integer.value[0] = msm_afe_slimbus_7_lb_vol_ctrl; + return 0; +} + +static int msm_qti_pp_set_slimbus_7_lb_vol_mixer(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + int ret = afe_loopback_gain(SLIMBUS_7_TX, + ucontrol->value.integer.value[0]); + + if (ret) + pr_err("%s: failed to set LB vol for SLIMBUS_7_TX, err %d\n", + __func__, ret); + else + msm_afe_slimbus_7_lb_vol_ctrl = + ucontrol->value.integer.value[0]; + + return ret; +} + static int msm_qti_pp_get_slimbus_8_lb_vol_mixer(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { @@ -857,6 +881,14 @@ static const struct snd_kcontrol_new tert_mi2s_lb_vol_mixer_controls[] = { msm_qti_pp_set_tert_mi2s_lb_vol_mixer, afe_lb_vol_gain), }; +static const struct snd_kcontrol_new slimbus_7_lb_vol_mixer_controls[] = { + SOC_SINGLE_EXT_TLV("SLIMBUS_7 LOOPBACK Volume", SND_SOC_NOPM, 0, + INT_RX_VOL_GAIN, 0, + msm_qti_pp_get_slimbus_7_lb_vol_mixer, + msm_qti_pp_set_slimbus_7_lb_vol_mixer, + afe_lb_vol_gain), +}; + static const struct snd_kcontrol_new slimbus_8_lb_vol_mixer_controls[] = { SOC_SINGLE_EXT_TLV("SLIMBUS_8 LOOPBACK Volume", SND_SOC_NOPM, 0, INT_RX_VOL_GAIN, 0, msm_qti_pp_get_slimbus_8_lb_vol_mixer, @@ -1061,6 +1093,9 @@ void msm_qti_pp_add_controls(struct snd_soc_platform *platform) snd_soc_add_platform_controls(platform, tert_mi2s_lb_vol_mixer_controls, ARRAY_SIZE(tert_mi2s_lb_vol_mixer_controls)); + snd_soc_add_platform_controls(platform, slimbus_7_lb_vol_mixer_controls, + ARRAY_SIZE(slimbus_7_lb_vol_mixer_controls)); + snd_soc_add_platform_controls(platform, slimbus_8_lb_vol_mixer_controls, ARRAY_SIZE(slimbus_8_lb_vol_mixer_controls)); |