]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge branch 'fix/asoc' into for-linus
authorTakashi Iwai <tiwai@suse.de>
Sun, 15 Aug 2010 12:34:02 +0000 (14:34 +0200)
committerTakashi Iwai <tiwai@suse.de>
Sun, 15 Aug 2010 12:34:02 +0000 (14:34 +0200)
MAINTAINERS
sound/soc/codecs/wm8994.c

index 02f75fccac20915ae4c7aad6b333ed0061f90e44..eceace1618c135031a6d31fc8860bb8fe89e5abd 100644 (file)
@@ -6325,8 +6325,9 @@ S:        Supported
 F:     drivers/input/touchscreen/*wm97*
 F:     include/linux/wm97xx.h
 
-WOLFSON MICROELECTRONICS PMIC DRIVERS
+WOLFSON MICROELECTRONICS DRIVERS
 M:     Mark Brown <broonie@opensource.wolfsonmicro.com>
+M:     Ian Lartey <ian@opensource.wolfsonmicro.com>
 T:     git git://opensource.wolfsonmicro.com/linux-2.6-audioplus
 W:     http://opensource.wolfsonmicro.com/node/8
 S:     Supported
@@ -6341,8 +6342,8 @@ F:        drivers/watchdog/wm83*_wdt.c
 F:     include/linux/mfd/wm831x/
 F:     include/linux/mfd/wm8350/
 F:     include/linux/mfd/wm8400*
-F:     sound/soc/codecs/wm8350.*
-F:     sound/soc/codecs/wm8400.*
+F:     include/sound/wm????.h
+F:     sound/soc/codecs/wm*
 
 X.25 NETWORK LAYER
 M:     Andrew Hendry <andrew.hendry@gmail.com>
index a87046a96f2abb01df5bde6d23bc24c29c3bfa3a..522249d5c2b463d9917e751bc0cac0fa9711c1da 100644 (file)
@@ -95,6 +95,7 @@ struct wm8994_priv {
 
        struct wm8994_micdet micdet[2];
 
+       int revision;
        struct wm8994_pdata *pdata;
 };
 
@@ -3070,6 +3071,8 @@ static int wm8994_set_dai_sysclk(struct snd_soc_dai *dai,
 static int wm8994_set_bias_level(struct snd_soc_codec *codec,
                                 enum snd_soc_bias_level level)
 {
+       struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
+
        switch (level) {
        case SND_SOC_BIAS_ON:
                break;
@@ -3082,11 +3085,16 @@ static int wm8994_set_bias_level(struct snd_soc_codec *codec,
 
        case SND_SOC_BIAS_STANDBY:
                if (codec->bias_level == SND_SOC_BIAS_OFF) {
-                       /* Tweak DC servo configuration for improved
-                        * performance. */
-                       snd_soc_write(codec, 0x102, 0x3);
-                       snd_soc_write(codec, 0x56, 0x3);
-                       snd_soc_write(codec, 0x102, 0);
+                       /* Tweak DC servo and DSP configuration for
+                        * improved performance. */
+                       if (wm8994->revision < 4) {
+                               /* Tweak DC servo and DSP configuration for
+                                * improved performance. */
+                               snd_soc_write(codec, 0x102, 0x3);
+                               snd_soc_write(codec, 0x56, 0x3);
+                               snd_soc_write(codec, 0x817, 0);
+                               snd_soc_write(codec, 0x102, 0);
+                       }
 
                        /* Discharge LINEOUT1 & 2 */
                        snd_soc_update_bits(codec, WM8994_ANTIPOP_1,
@@ -3919,7 +3927,6 @@ static int wm8994_codec_probe(struct platform_device *pdev)
        struct wm8994_priv *wm8994;
        struct snd_soc_codec *codec;
        int i;
-       u16 rev;
 
        if (wm8994_codec) {
                dev_err(&pdev->dev, "Another WM8994 is registered\n");
@@ -3973,8 +3980,8 @@ static int wm8994_codec_probe(struct platform_device *pdev)
                        wm8994->reg_cache[i] = 0;
 
        /* Set revision-specific configuration */
-       rev = snd_soc_read(codec, WM8994_CHIP_REVISION);
-       switch (rev) {
+       wm8994->revision = snd_soc_read(codec, WM8994_CHIP_REVISION);
+       switch (wm8994->revision) {
        case 2:
        case 3:
                wm8994->hubs.dcs_codes = -5;