few places the mic_detecting is not updated correctly when state changes, causing jack detection to go wrong
Signed-off-by: Vinod Koul vinod.koul@intel.com --- sound/soc/codecs/wm8994.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index 49b2b00..43f82d2 100644 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c @@ -3547,6 +3547,7 @@ static void wm8958_mic_id(void *data, u16 status) snd_soc_jack_report(wm8994->micdet[0].jack, 0, wm8994->btn_mask | SND_JACK_HEADSET); + wm8994->mic_detecting = true; return; }
@@ -3672,7 +3673,7 @@ static irqreturn_t wm1811_jackdet_irq(int irq, void *data) snd_soc_update_bits(codec, WM1811_JACKDET_CTRL, WM1811_JACKDET_DB, WM1811_JACKDET_DB);
- wm8994->mic_detecting = false; + wm8994->mic_detecting = true; wm8994->jack_mic = false; snd_soc_update_bits(codec, WM8958_MIC_DETECT_1, WM8958_MICD_ENA, 0); @@ -3696,6 +3697,7 @@ static irqreturn_t wm1811_jackdet_irq(int irq, void *data) /* Since we only report deltas force an update, ensures we * avoid bootstrapping issues with the core. */ snd_soc_jack_report(wm8994->micdet[0].jack, 0, 0); + wm8994->mic_detecting = true;
pm_runtime_put(codec->dev); return IRQ_HANDLED;