diff options
Diffstat (limited to 'sound/soc/codecs/wm8994.c')
| -rw-r--r-- | sound/soc/codecs/wm8994.c | 16 | 
1 files changed, 10 insertions, 6 deletions
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index 93d27b66025..ec69a6c152f 100644 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c @@ -770,6 +770,8 @@ static void vmid_reference(struct snd_soc_codec *codec)  {  	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); +	pm_runtime_get_sync(codec->dev); +  	wm8994->vmid_refcount++;  	dev_dbg(codec->dev, "Referencing VMID, refcount is now %d\n", @@ -783,7 +785,12 @@ static void vmid_reference(struct snd_soc_codec *codec)  				    WM8994_VMID_RAMP_MASK,  				    WM8994_STARTUP_BIAS_ENA |  				    WM8994_VMID_BUF_ENA | -				    (0x11 << WM8994_VMID_RAMP_SHIFT)); +				    (0x3 << WM8994_VMID_RAMP_SHIFT)); + +		/* Remove discharge for line out */ +		snd_soc_update_bits(codec, WM8994_ANTIPOP_1, +				    WM8994_LINEOUT1_DISCH | +				    WM8994_LINEOUT2_DISCH, 0);  		/* Main bias enable, VMID=2x40k */  		snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1, @@ -837,6 +844,8 @@ static void vmid_dereference(struct snd_soc_codec *codec)  				    WM8994_VMID_BUF_ENA |  				    WM8994_VMID_RAMP_MASK, 0);  	} + +	pm_runtime_put(codec->dev);  }  static int vmid_event(struct snd_soc_dapm_widget *w, @@ -2753,11 +2762,6 @@ static int wm8994_resume(struct snd_soc_codec *codec)  		codec->cache_only = 0;  	} -	/* Restore the registers */ -	ret = snd_soc_cache_sync(codec); -	if (ret != 0) -		dev_err(codec->dev, "Failed to sync cache: %d\n", ret); -  	wm8994_set_bias_level(codec, SND_SOC_BIAS_STANDBY);  	for (i = 0; i < ARRAY_SIZE(wm8994->fll); i++) {  |