提交 b9e67e5e 编写于 作者: M Mark Brown

ASoC: wm8994: Make sure we don't have MICBIAS on during jackdet mode

Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
上级 6334018f
...@@ -3170,9 +3170,6 @@ static void wm8958_default_micdet(u16 status, void *data) ...@@ -3170,9 +3170,6 @@ static void wm8958_default_micdet(u16 status, void *data)
snd_soc_update_bits(codec, WM8958_MIC_DETECT_1, snd_soc_update_bits(codec, WM8958_MIC_DETECT_1,
WM8958_MICD_ENA, 0); WM8958_MICD_ENA, 0);
wm1811_jackdet_set_mode(codec,
WM1811_JACKDET_MODE_JACK);
if (wm8994->pdata->jd_ext_cap) { if (wm8994->pdata->jd_ext_cap) {
mutex_lock(&codec->mutex); mutex_lock(&codec->mutex);
snd_soc_dapm_disable_pin(&codec->dapm, snd_soc_dapm_disable_pin(&codec->dapm,
...@@ -3180,6 +3177,9 @@ static void wm8958_default_micdet(u16 status, void *data) ...@@ -3180,6 +3177,9 @@ static void wm8958_default_micdet(u16 status, void *data)
snd_soc_dapm_sync(&codec->dapm); snd_soc_dapm_sync(&codec->dapm);
mutex_unlock(&codec->mutex); mutex_unlock(&codec->mutex);
} }
wm1811_jackdet_set_mode(codec,
WM1811_JACKDET_MODE_JACK);
} }
} }
...@@ -3235,23 +3235,24 @@ static irqreturn_t wm1811_jackdet_irq(int irq, void *data) ...@@ -3235,23 +3235,24 @@ static irqreturn_t wm1811_jackdet_irq(int irq, void *data)
snd_soc_update_bits(codec, WM8958_MICBIAS2, snd_soc_update_bits(codec, WM8958_MICBIAS2,
WM8958_MICB2_DISCH, 0); WM8958_MICB2_DISCH, 0);
/* If required for an external cap force MICBIAS on */
if (wm8994->pdata->jd_ext_cap) {
mutex_lock(&codec->mutex);
snd_soc_dapm_force_enable_pin(&codec->dapm,
"MICBIAS2");
snd_soc_dapm_sync(&codec->dapm);
mutex_unlock(&codec->mutex);
}
/* /*
* Start off measument of microphone impedence to find * Start off measument of microphone impedence to find
* out what's actually there. * out what's actually there.
*/ */
wm8994->mic_detecting = true; wm8994->mic_detecting = true;
wm1811_jackdet_set_mode(codec, WM1811_JACKDET_MODE_MIC); wm1811_jackdet_set_mode(codec, WM1811_JACKDET_MODE_MIC);
snd_soc_update_bits(codec, WM8958_MIC_DETECT_1, snd_soc_update_bits(codec, WM8958_MIC_DETECT_1,
WM8958_MICD_ENA, WM8958_MICD_ENA); WM8958_MICD_ENA, WM8958_MICD_ENA);
/* If required for an external cap force MICBIAS on */
if (wm8994->pdata->jd_ext_cap) {
mutex_lock(&codec->mutex);
snd_soc_dapm_force_enable_pin(&codec->dapm,
"MICBIAS2");
snd_soc_dapm_sync(&codec->dapm);
mutex_unlock(&codec->mutex);
}
} else { } else {
dev_dbg(codec->dev, "Jack not detected\n"); dev_dbg(codec->dev, "Jack not detected\n");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册