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

Unverified Commit 675212bf authored by Shuming Fan's avatar Shuming Fan Committed by Mark Brown
Browse files

ASoC: rt5682: fix jack type detection issue



The jack type detection needs the main bias power of analog.
The modification makes sure the main bias power on/off while jack plug/unplug.

Signed-off-by: default avatarShuming Fan <shumingf@realtek.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 4834d707
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -915,7 +915,8 @@ static int rt5682_headset_detect(struct snd_soc_component *component,
	if (jack_insert) {

		snd_soc_component_update_bits(component, RT5682_PWR_ANLG_1,
			RT5682_PWR_VREF2, RT5682_PWR_VREF2);
			RT5682_PWR_VREF2 | RT5682_PWR_MB,
			RT5682_PWR_VREF2 | RT5682_PWR_MB);
		snd_soc_component_update_bits(component,
				RT5682_PWR_ANLG_1, RT5682_PWR_FV2, 0);
		usleep_range(15000, 20000);
@@ -952,7 +953,7 @@ static int rt5682_headset_detect(struct snd_soc_component *component,
		snd_soc_component_update_bits(component, RT5682_CBJ_CTRL_1,
			RT5682_TRIG_JD_MASK, RT5682_TRIG_JD_LOW);
		snd_soc_component_update_bits(component, RT5682_PWR_ANLG_1,
			RT5682_PWR_VREF2, 0);
			RT5682_PWR_VREF2 | RT5682_PWR_MB, 0);
		snd_soc_component_update_bits(component, RT5682_PWR_ANLG_3,
			RT5682_PWR_CBJ, 0);

@@ -2301,16 +2302,13 @@ static int rt5682_set_bias_level(struct snd_soc_component *component,
	switch (level) {
	case SND_SOC_BIAS_PREPARE:
		regmap_update_bits(rt5682->regmap, RT5682_PWR_ANLG_1,
			RT5682_PWR_MB | RT5682_PWR_BG,
			RT5682_PWR_MB | RT5682_PWR_BG);
			RT5682_PWR_BG, RT5682_PWR_BG);
		regmap_update_bits(rt5682->regmap, RT5682_PWR_DIG_1,
			RT5682_DIG_GATE_CTRL | RT5682_PWR_LDO,
			RT5682_DIG_GATE_CTRL | RT5682_PWR_LDO);
		break;

	case SND_SOC_BIAS_STANDBY:
		regmap_update_bits(rt5682->regmap, RT5682_PWR_ANLG_1,
			RT5682_PWR_MB, RT5682_PWR_MB);
		regmap_update_bits(rt5682->regmap, RT5682_PWR_DIG_1,
			RT5682_DIG_GATE_CTRL, RT5682_DIG_GATE_CTRL);
		break;
@@ -2318,7 +2316,7 @@ static int rt5682_set_bias_level(struct snd_soc_component *component,
		regmap_update_bits(rt5682->regmap, RT5682_PWR_DIG_1,
			RT5682_DIG_GATE_CTRL | RT5682_PWR_LDO, 0);
		regmap_update_bits(rt5682->regmap, RT5682_PWR_ANLG_1,
			RT5682_PWR_MB | RT5682_PWR_BG, 0);
			RT5682_PWR_BG, 0);
		break;

	default: