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

Commit 46ab9249 authored by Sudheer Papothi's avatar Sudheer Papothi
Browse files

ASoC: wcd9xxx: Restore class h voltage reference resistance



Class-H voltage reference is set to 0 Ohms when headset
is enabled and restore back to default value when headset
is not in use.

Change-Id: I68ab1880bcc6f07686fe3eb60915f45135d1f681
Signed-off-by: default avatarSudheer Papothi <spapothi@codeaurora.org>
parent 8ffae7c0
Loading
Loading
Loading
Loading
+14 −1
Original line number Original line Diff line number Diff line
@@ -33,6 +33,13 @@ enum {
	DAC_GAIN_M0P6DB,
	DAC_GAIN_M0P6DB,
};
};


enum {
	VREF_FILT_R_0OHM = 0,
	VREF_FILT_R_25KOHM,
	VREF_FILT_R_50KOHM,
	VREF_FILT_R_100KOHM,
};

static void (*clsh_state_fp[NUM_CLSH_STATES_V2])(struct snd_soc_codec *,
static void (*clsh_state_fp[NUM_CLSH_STATES_V2])(struct snd_soc_codec *,
					      struct wcd_clsh_cdc_data *,
					      struct wcd_clsh_cdc_data *,
					      u8 req_state, bool en, int mode);
					      u8 req_state, bool en, int mode);
@@ -256,10 +263,16 @@ static void wcd_clsh_set_hph_mode(struct snd_soc_codec *codec,
{
{
	u8 val;
	u8 val;
	u8 gain;
	u8 gain;
	u8 res_val = VREF_FILT_R_0OHM;

	struct wcd9xxx *wcd9xxx = dev_get_drvdata(codec->dev->parent);
	struct wcd9xxx *wcd9xxx = dev_get_drvdata(codec->dev->parent);


	switch (mode) {
	switch (mode) {
	case CLS_H_NORMAL:
	case CLS_H_NORMAL:
		res_val = VREF_FILT_R_50KOHM;
		val = 0x00;
		gain = DAC_GAIN_0DB;
		break;
	case CLS_AB:
	case CLS_AB:
		val = 0x00;
		val = 0x00;
		gain = DAC_GAIN_0DB;
		gain = DAC_GAIN_0DB;
@@ -277,7 +290,7 @@ static void wcd_clsh_set_hph_mode(struct snd_soc_codec *codec,
	snd_soc_update_bits(codec, WCD9XXX_A_ANA_HPH, 0x0C, val);
	snd_soc_update_bits(codec, WCD9XXX_A_ANA_HPH, 0x0C, val);
	if (TASHA_IS_2_0(wcd9xxx->version)) {
	if (TASHA_IS_2_0(wcd9xxx->version)) {
		snd_soc_update_bits(codec, WCD9XXX_CLASSH_CTRL_VCL_2,
		snd_soc_update_bits(codec, WCD9XXX_CLASSH_CTRL_VCL_2,
				    0x30, 0x00);
				    0x30, (res_val << 4));
		snd_soc_update_bits(codec, WCD9XXX_HPH_REFBUFF_UHQA_CTL,
		snd_soc_update_bits(codec, WCD9XXX_HPH_REFBUFF_UHQA_CTL,
				    0x07, gain);
				    0x07, gain);
	}
	}