aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-08-15 14:22:00 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-08-15 14:22:00 -0400
commit1b68c9596ce17a1e06918ed65fc3d19b92b04aab (patch)
treed7588c281a92fb30604ddc23f88f748be028921d /sound/soc
parent5a4179460cb50d939a2ae713cf88fcbff75f2c1c (diff)
parentaaae5272118bcce90d11629f15bc01ea8e545e6d (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: ALSA: sound/usb/format: silence uninitialized variable warnings MAINTAINERS: Add Ian Lartey as comaintaner for Wolfson devices MAINTAINERS: Make Wolfson entry also cover CODEC drivers ASoC: Only tweak WM8994 chip configuration on devices up to rev D ASoC: Optimise DSP performance for WM8994 ALSA: hda - Fix dynamic ADC change working again ALSA: hda - Restrict PCM parameters per ELD information over HDMI sound: oss: sh_dac_audio.c removed duplicated #include
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/codecs/wm8994.c23
1 files changed, 15 insertions, 8 deletions
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,
3070static int wm8994_set_bias_level(struct snd_soc_codec *codec, 3071static 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;