diff options
| author | Takashi Iwai <tiwai@suse.de> | 2010-08-15 08:34:02 -0400 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2010-08-15 08:34:02 -0400 |
| commit | aaae5272118bcce90d11629f15bc01ea8e545e6d (patch) | |
| tree | cc90dfb59fd7235e105f0dd366cf96170fc143d4 | |
| parent | 18c5ef385c65360761f39d55b2e2cd370ab151db (diff) | |
| parent | a532f97c71c7a952531e02b0994104c532fbef0f (diff) | |
Merge branch 'fix/asoc' into for-linus
| -rw-r--r-- | MAINTAINERS | 7 | ||||
| -rw-r--r-- | sound/soc/codecs/wm8994.c | 23 |
2 files changed, 19 insertions, 11 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 02f75fccac20..eceace1618c1 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -6325,8 +6325,9 @@ S: Supported | |||
| 6325 | F: drivers/input/touchscreen/*wm97* | 6325 | F: drivers/input/touchscreen/*wm97* |
| 6326 | F: include/linux/wm97xx.h | 6326 | F: include/linux/wm97xx.h |
| 6327 | 6327 | ||
| 6328 | WOLFSON MICROELECTRONICS PMIC DRIVERS | 6328 | WOLFSON MICROELECTRONICS DRIVERS |
| 6329 | M: Mark Brown <broonie@opensource.wolfsonmicro.com> | 6329 | M: Mark Brown <broonie@opensource.wolfsonmicro.com> |
| 6330 | M: Ian Lartey <ian@opensource.wolfsonmicro.com> | ||
| 6330 | T: git git://opensource.wolfsonmicro.com/linux-2.6-audioplus | 6331 | T: git git://opensource.wolfsonmicro.com/linux-2.6-audioplus |
| 6331 | W: http://opensource.wolfsonmicro.com/node/8 | 6332 | W: http://opensource.wolfsonmicro.com/node/8 |
| 6332 | S: Supported | 6333 | S: Supported |
| @@ -6341,8 +6342,8 @@ F: drivers/watchdog/wm83*_wdt.c | |||
| 6341 | F: include/linux/mfd/wm831x/ | 6342 | F: include/linux/mfd/wm831x/ |
| 6342 | F: include/linux/mfd/wm8350/ | 6343 | F: include/linux/mfd/wm8350/ |
| 6343 | F: include/linux/mfd/wm8400* | 6344 | F: include/linux/mfd/wm8400* |
| 6344 | F: sound/soc/codecs/wm8350.* | 6345 | F: include/sound/wm????.h |
| 6345 | F: sound/soc/codecs/wm8400.* | 6346 | F: sound/soc/codecs/wm* |
| 6346 | 6347 | ||
| 6347 | X.25 NETWORK LAYER | 6348 | X.25 NETWORK LAYER |
| 6348 | M: Andrew Hendry <andrew.hendry@gmail.com> | 6349 | M: Andrew Hendry <andrew.hendry@gmail.com> |
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index a87046a96f2a..522249d5c2b4 100644 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c | |||
| @@ -95,6 +95,7 @@ struct wm8994_priv { | |||
| 95 | 95 | ||
| 96 | struct wm8994_micdet micdet[2]; | 96 | struct wm8994_micdet micdet[2]; |
| 97 | 97 | ||
| 98 | int revision; | ||
| 98 | struct wm8994_pdata *pdata; | 99 | struct wm8994_pdata *pdata; |
| 99 | }; | 100 | }; |
| 100 | 101 | ||
| @@ -3070,6 +3071,8 @@ static int wm8994_set_dai_sysclk(struct snd_soc_dai *dai, | |||
| 3070 | static int wm8994_set_bias_level(struct snd_soc_codec *codec, | 3071 | static int wm8994_set_bias_level(struct snd_soc_codec *codec, |
| 3071 | enum snd_soc_bias_level level) | 3072 | enum snd_soc_bias_level level) |
| 3072 | { | 3073 | { |
| 3074 | struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); | ||
| 3075 | |||
| 3073 | switch (level) { | 3076 | switch (level) { |
| 3074 | case SND_SOC_BIAS_ON: | 3077 | case SND_SOC_BIAS_ON: |
| 3075 | break; | 3078 | break; |
| @@ -3082,11 +3085,16 @@ static int wm8994_set_bias_level(struct snd_soc_codec *codec, | |||
| 3082 | 3085 | ||
| 3083 | case SND_SOC_BIAS_STANDBY: | 3086 | case SND_SOC_BIAS_STANDBY: |
| 3084 | if (codec->bias_level == SND_SOC_BIAS_OFF) { | 3087 | if (codec->bias_level == SND_SOC_BIAS_OFF) { |
| 3085 | /* Tweak DC servo configuration for improved | 3088 | /* Tweak DC servo and DSP configuration for |
| 3086 | * performance. */ | 3089 | * improved performance. */ |
| 3087 | snd_soc_write(codec, 0x102, 0x3); | 3090 | if (wm8994->revision < 4) { |
| 3088 | snd_soc_write(codec, 0x56, 0x3); | 3091 | /* Tweak DC servo and DSP configuration for |
| 3089 | snd_soc_write(codec, 0x102, 0); | 3092 | * improved performance. */ |
| 3093 | snd_soc_write(codec, 0x102, 0x3); | ||
| 3094 | snd_soc_write(codec, 0x56, 0x3); | ||
| 3095 | snd_soc_write(codec, 0x817, 0); | ||
| 3096 | snd_soc_write(codec, 0x102, 0); | ||
| 3097 | } | ||
| 3090 | 3098 | ||
| 3091 | /* Discharge LINEOUT1 & 2 */ | 3099 | /* Discharge LINEOUT1 & 2 */ |
| 3092 | snd_soc_update_bits(codec, WM8994_ANTIPOP_1, | 3100 | snd_soc_update_bits(codec, WM8994_ANTIPOP_1, |
| @@ -3919,7 +3927,6 @@ static int wm8994_codec_probe(struct platform_device *pdev) | |||
| 3919 | struct wm8994_priv *wm8994; | 3927 | struct wm8994_priv *wm8994; |
| 3920 | struct snd_soc_codec *codec; | 3928 | struct snd_soc_codec *codec; |
| 3921 | int i; | 3929 | int i; |
| 3922 | u16 rev; | ||
| 3923 | 3930 | ||
| 3924 | if (wm8994_codec) { | 3931 | if (wm8994_codec) { |
| 3925 | dev_err(&pdev->dev, "Another WM8994 is registered\n"); | 3932 | dev_err(&pdev->dev, "Another WM8994 is registered\n"); |
| @@ -3973,8 +3980,8 @@ static int wm8994_codec_probe(struct platform_device *pdev) | |||
| 3973 | wm8994->reg_cache[i] = 0; | 3980 | wm8994->reg_cache[i] = 0; |
| 3974 | 3981 | ||
| 3975 | /* Set revision-specific configuration */ | 3982 | /* Set revision-specific configuration */ |
| 3976 | rev = snd_soc_read(codec, WM8994_CHIP_REVISION); | 3983 | wm8994->revision = snd_soc_read(codec, WM8994_CHIP_REVISION); |
| 3977 | switch (rev) { | 3984 | switch (wm8994->revision) { |
| 3978 | case 2: | 3985 | case 2: |
| 3979 | case 3: | 3986 | case 3: |
| 3980 | wm8994->hubs.dcs_codes = -5; | 3987 | wm8994->hubs.dcs_codes = -5; |
