aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/wm8996.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/codecs/wm8996.c')
-rw-r--r--sound/soc/codecs/wm8996.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/sound/soc/codecs/wm8996.c b/sound/soc/codecs/wm8996.c
index 1a7655b0aa22..0330165079a4 100644
--- a/sound/soc/codecs/wm8996.c
+++ b/sound/soc/codecs/wm8996.c
@@ -2251,6 +2251,7 @@ int wm8996_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack,
2251 wm8996_polarity_fn polarity_cb) 2251 wm8996_polarity_fn polarity_cb)
2252{ 2252{
2253 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec); 2253 struct wm8996_priv *wm8996 = snd_soc_codec_get_drvdata(codec);
2254 struct snd_soc_dapm_context *dapm = &codec->dapm;
2254 2255
2255 wm8996->jack = jack; 2256 wm8996->jack = jack;
2256 wm8996->detecting = true; 2257 wm8996->detecting = true;
@@ -2267,8 +2268,12 @@ int wm8996_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack,
2267 WM8996_MICB2_DISCH, 0); 2268 WM8996_MICB2_DISCH, 0);
2268 2269
2269 /* LDO2 powers the microphones, SYSCLK clocks detection */ 2270 /* LDO2 powers the microphones, SYSCLK clocks detection */
2270 snd_soc_dapm_force_enable_pin(&codec->dapm, "LDO2"); 2271 snd_soc_dapm_mutex_lock(dapm);
2271 snd_soc_dapm_force_enable_pin(&codec->dapm, "SYSCLK"); 2272
2273 snd_soc_dapm_force_enable_pin_unlocked(dapm, "LDO2");
2274 snd_soc_dapm_force_enable_pin_unlocked(dapm, "SYSCLK");
2275
2276 snd_soc_dapm_mutex_unlock(dapm);
2272 2277
2273 /* We start off just enabling microphone detection - even a 2278 /* We start off just enabling microphone detection - even a
2274 * plain headphone will trigger detection. 2279 * plain headphone will trigger detection.
@@ -2595,7 +2600,7 @@ static void wm8996_retune_mobile_pdata(struct snd_soc_codec *codec)
2595 dev_dbg(codec->dev, "Allocated %d unique ReTune Mobile names\n", 2600 dev_dbg(codec->dev, "Allocated %d unique ReTune Mobile names\n",
2596 wm8996->num_retune_mobile_texts); 2601 wm8996->num_retune_mobile_texts);
2597 2602
2598 wm8996->retune_mobile_enum.max = wm8996->num_retune_mobile_texts; 2603 wm8996->retune_mobile_enum.items = wm8996->num_retune_mobile_texts;
2599 wm8996->retune_mobile_enum.texts = wm8996->retune_mobile_texts; 2604 wm8996->retune_mobile_enum.texts = wm8996->retune_mobile_texts;
2600 2605
2601 ret = snd_soc_add_codec_controls(codec, controls, ARRAY_SIZE(controls)); 2606 ret = snd_soc_add_codec_controls(codec, controls, ARRAY_SIZE(controls));