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

Commit 55a27786 authored by Mark Brown's avatar Mark Brown
Browse files

ASoC: wm8994: Actively discharge idle MICBIAS with jack detect



This minimises the chance of any external capacitors that are fitted
being discharged into headphones as they insert.

Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 29fdc360
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -3224,6 +3224,9 @@ static irqreturn_t wm1811_jackdet_irq(int irq, void *data)
		snd_soc_jack_report(wm8994->micdet[0].jack,
				    SND_JACK_MECHANICAL, SND_JACK_MECHANICAL);

		snd_soc_update_bits(codec, WM8958_MICBIAS2,
				    WM8958_MICB2_DISCH, 0);

		/*
		 * Start off measument of microphone impedence to find
		 * out what's actually there.
@@ -3235,6 +3238,9 @@ static irqreturn_t wm1811_jackdet_irq(int irq, void *data)
	} else {
		dev_dbg(codec->dev, "Jack not detected\n");

		snd_soc_update_bits(codec, WM8958_MICBIAS2,
				    WM8958_MICB2_DISCH, WM8958_MICB2_DISCH);

		snd_soc_jack_report(wm8994->micdet[0].jack, 0,
				    SND_JACK_MECHANICAL | SND_JACK_HEADSET |
				    wm8994->btn_mask);
@@ -3320,6 +3326,9 @@ int wm8958_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack,
		 * otherwise jump straight to microphone detection.
		 */
		if (wm8994->jackdet) {
			snd_soc_update_bits(codec, WM8958_MICBIAS2,
					    WM8958_MICB2_DISCH,
					    WM8958_MICB2_DISCH);
			snd_soc_update_bits(codec, WM8994_LDO_1,
					    WM8994_LDO1_DISCH, 0);
			wm1811_jackdet_set_mode(codec,