Commit 8db7f56d authored by Oder Chiou's avatar Oder Chiou Committed by Mark Brown

ASoC: rt5645: Modify the jack detection function to prevent the pop sound while the jack plug in

The patch corrects the sequence of the jack detection. It will prevent the
pop sound while the jack plug in.
Signed-off-by: default avatarOder Chiou <oder_chiou@realtek.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 588cd850
...@@ -2805,14 +2805,15 @@ static int rt5645_jack_detect(struct snd_soc_codec *codec, int jack_insert) ...@@ -2805,14 +2805,15 @@ static int rt5645_jack_detect(struct snd_soc_codec *codec, int jack_insert)
} }
regmap_write(rt5645->regmap, RT5645_JD_CTRL3, 0x00f0); regmap_write(rt5645->regmap, RT5645_JD_CTRL3, 0x00f0);
regmap_write(rt5645->regmap, RT5645_IN1_CTRL1, 0x0006);
regmap_update_bits(rt5645->regmap, regmap_update_bits(rt5645->regmap,
RT5645_IN1_CTRL2, 0x1000, 0x1000); RT5645_IN1_CTRL2, 0x1000, 0x1000);
regmap_update_bits(rt5645->regmap, RT5645_IN1_CTRL1, 0x0004,
0x0004);
msleep(100); msleep(100);
regmap_update_bits(rt5645->regmap, regmap_update_bits(rt5645->regmap,
RT5645_IN1_CTRL2, 0x1000, 0x0000); RT5645_IN1_CTRL2, 0x1000, 0x0000);
msleep(450); msleep(600);
regmap_read(rt5645->regmap, RT5645_IN1_CTRL3, &val); regmap_read(rt5645->regmap, RT5645_IN1_CTRL3, &val);
val &= 0x7; val &= 0x7;
dev_dbg(codec->dev, "val = %d\n", val); dev_dbg(codec->dev, "val = %d\n", val);
...@@ -2828,9 +2829,17 @@ static int rt5645_jack_detect(struct snd_soc_codec *codec, int jack_insert) ...@@ -2828,9 +2829,17 @@ static int rt5645_jack_detect(struct snd_soc_codec *codec, int jack_insert)
rt5645->jack_type = SND_JACK_HEADPHONE; rt5645->jack_type = SND_JACK_HEADPHONE;
} }
snd_soc_update_bits(codec, RT5645_CHARGE_PUMP, 0x0300, 0x0200);
snd_soc_write(codec, RT5645_DEPOP_M1, 0x001d);
snd_soc_write(codec, RT5645_DEPOP_M1, 0x0001);
} else { /* jack out */ } else { /* jack out */
rt5645->jack_type = 0; rt5645->jack_type = 0;
regmap_update_bits(rt5645->regmap, RT5645_IN1_CTRL2, 0x1000,
0x1000);
regmap_update_bits(rt5645->regmap, RT5645_IN1_CTRL1, 0x0004,
0x0000);
if (rt5645->en_button_func) if (rt5645->en_button_func)
rt5645_enable_push_button_irq(codec, false); rt5645_enable_push_button_irq(codec, false);
......
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