ASoC: wm_hubs: Disable cache of the DC servo calibration for WM1811
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 29 Feb 2012 16:40:08 +0000 (16:40 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Sun, 4 Mar 2012 01:56:47 +0000 (01:56 +0000)
The WM1811 DC servo is able to run much faster than previous devices so
the benefit of skipping calibration is not useful.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/codecs/wm8994.c
sound/soc/codecs/wm_hubs.c
sound/soc/codecs/wm_hubs.h

index a567a4d9b5dcd32eebb10273888ec4771978b0a4..1fef87d6a285d30c33c37d270e6dee55f60b8881 100644 (file)
@@ -3535,6 +3535,7 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
                wm8994->hubs.dcs_readback_mode = 2;
                wm8994->hubs.no_series_update = 1;
                wm8994->hubs.hp_startup_mode = 1;
+               wm8994->hubs.no_cache_class_w = true;
 
                switch (wm8994->revision) {
                case 0:
index 7cffdd4b70fba455a408f848cab3e7dfdc40a2d6..c08d1c2f346fafbdefee4c3cdecda6d1a5c137ab 100644 (file)
@@ -207,7 +207,7 @@ static void calibrate_dc_servo(struct snd_soc_codec *codec)
 
        /* Save the callibrated offset if we're in class W mode and
         * therefore don't have any analogue signal mixed in. */
-       if (hubs->class_w)
+       if (hubs->class_w && !hubs->no_cache_class_w)
                hubs->class_w_dcs = dcs_cfg;
 }
 
index 4140905c738144f0330904881ea92885ac5fb480..5705276f49438f396eb5252b8bb65514cdfb8498 100644 (file)
@@ -30,6 +30,7 @@ struct wm_hubs_data {
        int series_startup;
        int no_series_update;
 
+       bool no_cache_class_w;
        bool class_w;
        u16 class_w_dcs;