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

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
...@@ -915,7 +915,8 @@ static int rt5682_headset_detect(struct snd_soc_component *component, ...@@ -915,7 +915,8 @@ static int rt5682_headset_detect(struct snd_soc_component *component,
if (jack_insert) { if (jack_insert) {
snd_soc_component_update_bits(component, RT5682_PWR_ANLG_1, 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, snd_soc_component_update_bits(component,
RT5682_PWR_ANLG_1, RT5682_PWR_FV2, 0); RT5682_PWR_ANLG_1, RT5682_PWR_FV2, 0);
usleep_range(15000, 20000); usleep_range(15000, 20000);
...@@ -952,7 +953,7 @@ static int rt5682_headset_detect(struct snd_soc_component *component, ...@@ -952,7 +953,7 @@ static int rt5682_headset_detect(struct snd_soc_component *component,
snd_soc_component_update_bits(component, RT5682_CBJ_CTRL_1, snd_soc_component_update_bits(component, RT5682_CBJ_CTRL_1,
RT5682_TRIG_JD_MASK, RT5682_TRIG_JD_LOW); RT5682_TRIG_JD_MASK, RT5682_TRIG_JD_LOW);
snd_soc_component_update_bits(component, RT5682_PWR_ANLG_1, 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, snd_soc_component_update_bits(component, RT5682_PWR_ANLG_3,
RT5682_PWR_CBJ, 0); RT5682_PWR_CBJ, 0);
...@@ -2301,16 +2302,13 @@ static int rt5682_set_bias_level(struct snd_soc_component *component, ...@@ -2301,16 +2302,13 @@ static int rt5682_set_bias_level(struct snd_soc_component *component,
switch (level) { switch (level) {
case SND_SOC_BIAS_PREPARE: case SND_SOC_BIAS_PREPARE:
regmap_update_bits(rt5682->regmap, RT5682_PWR_ANLG_1, regmap_update_bits(rt5682->regmap, RT5682_PWR_ANLG_1,
RT5682_PWR_MB | RT5682_PWR_BG, RT5682_PWR_BG, RT5682_PWR_BG);
RT5682_PWR_MB | RT5682_PWR_BG);
regmap_update_bits(rt5682->regmap, RT5682_PWR_DIG_1, regmap_update_bits(rt5682->regmap, RT5682_PWR_DIG_1,
RT5682_DIG_GATE_CTRL | RT5682_PWR_LDO, RT5682_DIG_GATE_CTRL | RT5682_PWR_LDO,
RT5682_DIG_GATE_CTRL | RT5682_PWR_LDO); RT5682_DIG_GATE_CTRL | RT5682_PWR_LDO);
break; break;
case SND_SOC_BIAS_STANDBY: 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, regmap_update_bits(rt5682->regmap, RT5682_PWR_DIG_1,
RT5682_DIG_GATE_CTRL, RT5682_DIG_GATE_CTRL); RT5682_DIG_GATE_CTRL, RT5682_DIG_GATE_CTRL);
break; break;
...@@ -2318,7 +2316,7 @@ static int rt5682_set_bias_level(struct snd_soc_component *component, ...@@ -2318,7 +2316,7 @@ static int rt5682_set_bias_level(struct snd_soc_component *component,
regmap_update_bits(rt5682->regmap, RT5682_PWR_DIG_1, regmap_update_bits(rt5682->regmap, RT5682_PWR_DIG_1,
RT5682_DIG_GATE_CTRL | RT5682_PWR_LDO, 0); RT5682_DIG_GATE_CTRL | RT5682_PWR_LDO, 0);
regmap_update_bits(rt5682->regmap, RT5682_PWR_ANLG_1, regmap_update_bits(rt5682->regmap, RT5682_PWR_ANLG_1,
RT5682_PWR_MB | RT5682_PWR_BG, 0); RT5682_PWR_BG, 0);
break; break;
default: default:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment