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

Commit b03f5204 authored by Phani Kumar Uppalapati's avatar Phani Kumar Uppalapati
Browse files

ASoC: wcd9306: Add codec controls to get impedance of hphr and hphl



Add kcontrol to get the impedance of headphone left and headphone
right. These controls are applicable to both tapan codec versions
wcd9306 and wcd9302.

Change-Id: Ia414029f781c151084a9ad93795ef8a1aa4c95a2
Signed-off-by: default avatarPhani Kumar Uppalapati <phaniu@codeaurora.org>
parent 23fe9299
Loading
Loading
Loading
Loading
+24 −0
Original line number Original line Diff line number Diff line
@@ -1064,6 +1064,25 @@ static const struct soc_enum class_h_dsm_enum =
static const struct snd_kcontrol_new class_h_dsm_mux =
static const struct snd_kcontrol_new class_h_dsm_mux =
	SOC_DAPM_ENUM("CLASS_H_DSM MUX Mux", class_h_dsm_enum);
	SOC_DAPM_ENUM("CLASS_H_DSM MUX Mux", class_h_dsm_enum);


static int tapan_hph_impedance_get(struct snd_kcontrol *kcontrol,
				   struct snd_ctl_elem_value *ucontrol)
{
	uint32_t zl, zr;
	bool hphr;
	struct soc_multi_mixer_control *mc;
	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
	struct tapan_priv *priv = snd_soc_codec_get_drvdata(codec);

	mc = (struct soc_multi_mixer_control *)(kcontrol->private_value);

	hphr = mc->shift;
	wcd9xxx_mbhc_get_impedance(&priv->mbhc, &zl, &zr);
	pr_debug("%s: zl %u, zr %u\n", __func__, zl, zr);
	ucontrol->value.integer.value[0] = hphr ? zr : zl;

	return 0;
}

static const struct snd_kcontrol_new tapan_common_snd_controls[] = {
static const struct snd_kcontrol_new tapan_common_snd_controls[] = {


	SOC_ENUM_EXT("EAR PA Gain", tapan_ear_pa_gain_enum[0],
	SOC_ENUM_EXT("EAR PA Gain", tapan_ear_pa_gain_enum[0],
@@ -1167,6 +1186,11 @@ static const struct snd_kcontrol_new tapan_common_snd_controls[] = {
	tapan_get_iir_band_audio_mixer, tapan_put_iir_band_audio_mixer),
	tapan_get_iir_band_audio_mixer, tapan_put_iir_band_audio_mixer),
	SOC_SINGLE_MULTI_EXT("IIR2 Band5", IIR2, BAND5, 255, 0, 5,
	SOC_SINGLE_MULTI_EXT("IIR2 Band5", IIR2, BAND5, 255, 0, 5,
	tapan_get_iir_band_audio_mixer, tapan_put_iir_band_audio_mixer),
	tapan_get_iir_band_audio_mixer, tapan_put_iir_band_audio_mixer),

	SOC_SINGLE_EXT("HPHL Impedance", 0, 0, UINT_MAX, 0,
		       tapan_hph_impedance_get, NULL),
	SOC_SINGLE_EXT("HPHR Impedance", 0, 1, UINT_MAX, 0,
		       tapan_hph_impedance_get, NULL),
};
};


static const struct snd_kcontrol_new tapan_9306_snd_controls[] = {
static const struct snd_kcontrol_new tapan_9306_snd_controls[] = {