Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8c5c9a43 authored by Satya Krishna Pindiproli's avatar Satya Krishna Pindiproli Committed by Banajit Goswami
Browse files

ASoC: msm: add Slimbus7 loopback volume mixer control



Add mixer control for Slimbus7 Loopback Volume and missing
links in routing driver for SLIMBUS_7_RX.

CRs-Fixed: 1117314
Change-Id: I519e0a03386d1ce4e4a32243e4f8cfe20d5041aa
Signed-off-by: default avatarSatya Krishna Pindiproli <satyak@codeaurora.org>
parent 69ece6b1
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -11527,11 +11527,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"},
+35 −0
Original line number Diff line number Diff line
@@ -405,6 +405,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);
@@ -477,6 +478,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)
{
@@ -861,6 +885,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,
@@ -1065,6 +1097,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));