]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - sound/soc/codecs/wm8996.c
ASoC: Tune the accessory detection rates for WM8996
[mirror_ubuntu-artful-kernel.git] / sound / soc / codecs / wm8996.c
index 41cc9d2d5ae9c36289e7ea687bcac8cfc5d213c2..da7acaefa9d9716e6f1bd9be79e164286e98e4ff 100644 (file)
@@ -2043,6 +2043,7 @@ static int wm8996_set_sysclk(struct snd_soc_dai *dai,
                break;
        case 24576000:
                ratediv = WM8996_SYSCLK_DIV;
+               wm8996->sysclk /= 2;
        case 12288000:
                snd_soc_update_bits(codec, WM8996_AIF_RATE,
                                    WM8996_SYSCLK_RATE, WM8996_SYSCLK_RATE);
@@ -2571,8 +2572,10 @@ static void wm8996_micd(struct snd_soc_codec *codec)
                                    SND_JACK_BTN_0);
 
                snd_soc_update_bits(codec, WM8996_MIC_DETECT_1,
-                                   WM8996_MICD_RATE_MASK,
-                                   WM8996_MICD_RATE_MASK);
+                                   WM8996_MICD_RATE_MASK |
+                                   WM8996_MICD_BIAS_STARTTIME_MASK,
+                                   WM8996_MICD_RATE_MASK |
+                                   9 << WM8996_MICD_BIAS_STARTTIME_SHIFT);
                return;
        }
 
@@ -2589,8 +2592,10 @@ static void wm8996_micd(struct snd_soc_codec *codec)
                        /* Increase poll rate to give better responsiveness
                         * for buttons */
                        snd_soc_update_bits(codec, WM8996_MIC_DETECT_1,
-                                           WM8996_MICD_RATE_MASK,
-                                           5 << WM8996_MICD_RATE_SHIFT);
+                                           WM8996_MICD_RATE_MASK |
+                                           WM8996_MICD_BIAS_STARTTIME_MASK,
+                                           5 << WM8996_MICD_RATE_SHIFT |
+                                           7 << WM8996_MICD_BIAS_STARTTIME_SHIFT);
                } else {
                        dev_dbg(codec->dev, "Mic button up\n");
                        snd_soc_jack_report(wm8996->jack, 0, SND_JACK_BTN_0);
@@ -2638,8 +2643,10 @@ static void wm8996_micd(struct snd_soc_codec *codec)
                         * responsiveness.
                         */
                        snd_soc_update_bits(codec, WM8996_MIC_DETECT_1,
-                                           WM8996_MICD_RATE_MASK,
-                                           7 << WM8996_MICD_RATE_SHIFT);
+                                           WM8996_MICD_RATE_MASK |
+                                           WM8996_MICD_BIAS_STARTTIME_MASK,
+                                           7 << WM8996_MICD_RATE_SHIFT |
+                                           7 << WM8996_MICD_BIAS_STARTTIME_SHIFT);
                }
        }
 }