Merge remote-tracking branches 'asoc/topic/wm5100', 'asoc/topic/wm8523', 'asoc/topic...
[sfrench/cifs-2.6.git] / sound / soc / codecs / wm5100.c
index 4e3e31aaf5098e473391f578df6fe0c3c6042a95..d3fa65fd9e85a84b466217824c48e10a1cbe7ed7 100644 (file)
@@ -506,21 +506,21 @@ static const char *wm5100_lhpf_mode_text[] = {
        "Low-pass", "High-pass"
 };
 
-static const struct soc_enum wm5100_lhpf1_mode =
-       SOC_ENUM_SINGLE(WM5100_HPLPF1_1, WM5100_LHPF1_MODE_SHIFT, 2,
-                       wm5100_lhpf_mode_text);
+static SOC_ENUM_SINGLE_DECL(wm5100_lhpf1_mode,
+                           WM5100_HPLPF1_1, WM5100_LHPF1_MODE_SHIFT,
+                           wm5100_lhpf_mode_text);
 
-static const struct soc_enum wm5100_lhpf2_mode =
-       SOC_ENUM_SINGLE(WM5100_HPLPF2_1, WM5100_LHPF2_MODE_SHIFT, 2,
-                       wm5100_lhpf_mode_text);
+static SOC_ENUM_SINGLE_DECL(wm5100_lhpf2_mode,
+                           WM5100_HPLPF2_1, WM5100_LHPF2_MODE_SHIFT,
+                           wm5100_lhpf_mode_text);
 
-static const struct soc_enum wm5100_lhpf3_mode =
-       SOC_ENUM_SINGLE(WM5100_HPLPF3_1, WM5100_LHPF3_MODE_SHIFT, 2,
-                       wm5100_lhpf_mode_text);
+static SOC_ENUM_SINGLE_DECL(wm5100_lhpf3_mode,
+                           WM5100_HPLPF3_1, WM5100_LHPF3_MODE_SHIFT,
+                           wm5100_lhpf_mode_text);
 
-static const struct soc_enum wm5100_lhpf4_mode =
-       SOC_ENUM_SINGLE(WM5100_HPLPF4_1, WM5100_LHPF4_MODE_SHIFT, 2,
-                       wm5100_lhpf_mode_text);
+static SOC_ENUM_SINGLE_DECL(wm5100_lhpf4_mode,
+                           WM5100_HPLPF4_1, WM5100_LHPF4_MODE_SHIFT,
+                           wm5100_lhpf_mode_text);
 
 static const struct snd_kcontrol_new wm5100_snd_controls[] = {
 SOC_SINGLE("IN1 High Performance Switch", WM5100_IN1L_CONTROL,
@@ -2100,6 +2100,7 @@ static void wm5100_micd_irq(struct wm5100_priv *wm5100)
 int wm5100_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack)
 {
        struct wm5100_priv *wm5100 = snd_soc_codec_get_drvdata(codec);
+       struct snd_soc_dapm_context *dapm = &codec->dapm;
 
        if (jack) {
                wm5100->jack = jack;
@@ -2117,9 +2118,14 @@ int wm5100_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack)
                                    WM5100_ACCDET_RATE_MASK);
 
                /* We need the charge pump to power MICBIAS */
-               snd_soc_dapm_force_enable_pin(&codec->dapm, "CP2");
-               snd_soc_dapm_force_enable_pin(&codec->dapm, "SYSCLK");
-               snd_soc_dapm_sync(&codec->dapm);
+               snd_soc_dapm_mutex_lock(dapm);
+
+               snd_soc_dapm_force_enable_pin_unlocked(dapm, "CP2");
+               snd_soc_dapm_force_enable_pin_unlocked(dapm, "SYSCLK");
+
+               snd_soc_dapm_sync_unlocked(dapm);
+
+               snd_soc_dapm_mutex_unlock(dapm);
 
                /* We start off just enabling microphone detection - even a
                 * plain headphone will trigger detection.