aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/wm8994.c
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2010-04-05 14:19:32 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2010-04-05 14:19:32 -0400
commit53a61d967a480307db4c8f7950ddb8bb1a0fda9b (patch)
tree6b3ce07b14db2986a175f30e6477ed40445c7c17 /sound/soc/codecs/wm8994.c
parent8876698406147986a9a7748586a54c4b14514c0e (diff)
parent5f712b2b73a9fc87fcc52124cfe8adefaa0c92f5 (diff)
Merge branch 'for-2.6.34' into for-2.6.35
Conflicts due to context changes next to the backported DMA data change: include/sound/soc.h
Diffstat (limited to 'sound/soc/codecs/wm8994.c')
-rw-r--r--sound/soc/codecs/wm8994.c56
1 files changed, 31 insertions, 25 deletions
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
index fc3dce814924..e00201e0820e 100644
--- a/sound/soc/codecs/wm8994.c
+++ b/sound/soc/codecs/wm8994.c
@@ -3015,34 +3015,39 @@ static int wm8994_set_bias_level(struct snd_soc_codec *codec,
3015 break; 3015 break;
3016 3016
3017 case SND_SOC_BIAS_OFF: 3017 case SND_SOC_BIAS_OFF:
3018 /* Switch over to startup biases */ 3018 if (codec->bias_level == SND_SOC_BIAS_STANDBY) {
3019 snd_soc_update_bits(codec, WM8994_ANTIPOP_2, 3019 /* Switch over to startup biases */
3020 WM8994_BIAS_SRC | WM8994_STARTUP_BIAS_ENA | 3020 snd_soc_update_bits(codec, WM8994_ANTIPOP_2,
3021 WM8994_VMID_BUF_ENA | 3021 WM8994_BIAS_SRC |
3022 WM8994_VMID_RAMP_MASK, 3022 WM8994_STARTUP_BIAS_ENA |
3023 WM8994_BIAS_SRC | WM8994_STARTUP_BIAS_ENA | 3023 WM8994_VMID_BUF_ENA |
3024 WM8994_VMID_BUF_ENA | 3024 WM8994_VMID_RAMP_MASK,
3025 (1 << WM8994_VMID_RAMP_SHIFT)); 3025 WM8994_BIAS_SRC |
3026 3026 WM8994_STARTUP_BIAS_ENA |
3027 /* Disable main biases */ 3027 WM8994_VMID_BUF_ENA |
3028 snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1, 3028 (1 << WM8994_VMID_RAMP_SHIFT));
3029 WM8994_BIAS_ENA | WM8994_VMID_SEL_MASK, 0);
3030 3029
3031 /* Discharge line */ 3030 /* Disable main biases */
3032 snd_soc_update_bits(codec, WM8994_ANTIPOP_1, 3031 snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1,
3033 WM8994_LINEOUT1_DISCH | 3032 WM8994_BIAS_ENA |
3034 WM8994_LINEOUT2_DISCH, 3033 WM8994_VMID_SEL_MASK, 0);
3035 WM8994_LINEOUT1_DISCH |
3036 WM8994_LINEOUT2_DISCH);
3037 3034
3038 msleep(5); 3035 /* Discharge line */
3036 snd_soc_update_bits(codec, WM8994_ANTIPOP_1,
3037 WM8994_LINEOUT1_DISCH |
3038 WM8994_LINEOUT2_DISCH,
3039 WM8994_LINEOUT1_DISCH |
3040 WM8994_LINEOUT2_DISCH);
3039 3041
3040 /* Switch off startup biases */ 3042 msleep(5);
3041 snd_soc_update_bits(codec, WM8994_ANTIPOP_2,
3042 WM8994_BIAS_SRC | WM8994_STARTUP_BIAS_ENA |
3043 WM8994_VMID_BUF_ENA |
3044 WM8994_VMID_RAMP_MASK, 0);
3045 3043
3044 /* Switch off startup biases */
3045 snd_soc_update_bits(codec, WM8994_ANTIPOP_2,
3046 WM8994_BIAS_SRC |
3047 WM8994_STARTUP_BIAS_ENA |
3048 WM8994_VMID_BUF_ENA |
3049 WM8994_VMID_RAMP_MASK, 0);
3050 }
3046 break; 3051 break;
3047 } 3052 }
3048 codec->bias_level = level; 3053 codec->bias_level = level;
@@ -3866,11 +3871,12 @@ static int wm8994_codec_probe(struct platform_device *pdev)
3866 case 3: 3871 case 3:
3867 wm8994->hubs.dcs_codes = -5; 3872 wm8994->hubs.dcs_codes = -5;
3868 wm8994->hubs.hp_startup_mode = 1; 3873 wm8994->hubs.hp_startup_mode = 1;
3874 wm8994->hubs.dcs_readback_mode = 1;
3869 break; 3875 break;
3870 default: 3876 default:
3877 wm8994->hubs.dcs_readback_mode = 1;
3871 break; 3878 break;
3872 } 3879 }
3873
3874 3880
3875 ret = wm8994_request_irq(codec->control_data, WM8994_IRQ_MIC1_DET, 3881 ret = wm8994_request_irq(codec->control_data, WM8994_IRQ_MIC1_DET,
3876 wm8994_mic_irq, "Mic 1 detect", wm8994); 3882 wm8994_mic_irq, "Mic 1 detect", wm8994);