aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/wm8962.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2011-09-20 03:14:04 -0400
committerTakashi Iwai <tiwai@suse.de>2011-09-20 03:14:04 -0400
commit290b421f699463478d215c17cd6be52d78e16976 (patch)
tree27a2a4555feed1adc9b0ada4e746b13298f3ce67 /sound/soc/codecs/wm8962.c
parent356aab7d419822f413af5fe1bc47af40957a23fb (diff)
parent46724c2e023cb7ba5cd5000dee6481f0a15ebed9 (diff)
Merge branch 'fix/hda' into topic/hda
Diffstat (limited to 'sound/soc/codecs/wm8962.c')
-rw-r--r--sound/soc/codecs/wm8962.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c
index 60d740ebeb5b..1725550c293e 100644
--- a/sound/soc/codecs/wm8962.c
+++ b/sound/soc/codecs/wm8962.c
@@ -2221,6 +2221,8 @@ static int sysclk_event(struct snd_soc_dapm_widget *w,
2221 switch (event) { 2221 switch (event) {
2222 case SND_SOC_DAPM_PRE_PMU: 2222 case SND_SOC_DAPM_PRE_PMU:
2223 if (fll) { 2223 if (fll) {
2224 try_wait_for_completion(&wm8962->fll_lock);
2225
2224 snd_soc_update_bits(codec, WM8962_FLL_CONTROL_1, 2226 snd_soc_update_bits(codec, WM8962_FLL_CONTROL_1,
2225 WM8962_FLL_ENA, WM8962_FLL_ENA); 2227 WM8962_FLL_ENA, WM8962_FLL_ENA);
2226 if (wm8962->irq) { 2228 if (wm8962->irq) {
@@ -2927,10 +2929,6 @@ static int wm8962_set_bias_level(struct snd_soc_codec *codec,
2927 WM8962_BIAS_ENA | 0x180); 2929 WM8962_BIAS_ENA | 0x180);
2928 2930
2929 msleep(5); 2931 msleep(5);
2930
2931 snd_soc_update_bits(codec, WM8962_CLOCKING2,
2932 WM8962_CLKREG_OVD,
2933 WM8962_CLKREG_OVD);
2934 } 2932 }
2935 2933
2936 /* VMID 2*250k */ 2934 /* VMID 2*250k */
@@ -3288,6 +3286,8 @@ static int wm8962_set_fll(struct snd_soc_codec *codec, int fll_id, int source,
3288 snd_soc_write(codec, WM8962_FLL_CONTROL_7, fll_div.lambda); 3286 snd_soc_write(codec, WM8962_FLL_CONTROL_7, fll_div.lambda);
3289 snd_soc_write(codec, WM8962_FLL_CONTROL_8, fll_div.n); 3287 snd_soc_write(codec, WM8962_FLL_CONTROL_8, fll_div.n);
3290 3288
3289 try_wait_for_completion(&wm8962->fll_lock);
3290
3291 snd_soc_update_bits(codec, WM8962_FLL_CONTROL_1, 3291 snd_soc_update_bits(codec, WM8962_FLL_CONTROL_1,
3292 WM8962_FLL_FRAC | WM8962_FLL_REFCLK_SRC_MASK | 3292 WM8962_FLL_FRAC | WM8962_FLL_REFCLK_SRC_MASK |
3293 WM8962_FLL_ENA, fll1); 3293 WM8962_FLL_ENA, fll1);
@@ -3868,6 +3868,10 @@ static int wm8962_probe(struct snd_soc_codec *codec)
3868 */ 3868 */
3869 snd_soc_update_bits(codec, WM8962_CLOCKING2, WM8962_SYSCLK_ENA, 0); 3869 snd_soc_update_bits(codec, WM8962_CLOCKING2, WM8962_SYSCLK_ENA, 0);
3870 3870
3871 /* Ensure we have soft control over all registers */
3872 snd_soc_update_bits(codec, WM8962_CLOCKING2,
3873 WM8962_CLKREG_OVD, WM8962_CLKREG_OVD);
3874
3871 regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies); 3875 regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies);
3872 3876
3873 if (pdata) { 3877 if (pdata) {