aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2010-03-29 11:34:42 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2010-04-05 11:19:29 -0400
commitae9d8607fe24253efc9f14b696f51cfd683801be (patch)
treed9743eee3b7219d011d333cdbff93bda73cfe68c
parent8437f7006b9cfa249791e2fd57596683d4561843 (diff)
ASoC: Don't do runtime wm_hubs DC servo updates if using offset correction
If we need to offset correct the DC servo then don't use runtime recalibration since that is likely to introduce further offsets which will be evident on powerdown. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
-rw-r--r--sound/soc/codecs/wm_hubs.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sound/soc/codecs/wm_hubs.c b/sound/soc/codecs/wm_hubs.c
index 2b5c0924f615..e81ba6d2d7cd 100644
--- a/sound/soc/codecs/wm_hubs.c
+++ b/sound/soc/codecs/wm_hubs.c
@@ -162,10 +162,16 @@ static int wm8993_put_dc_servo(struct snd_kcontrol *kcontrol,
162 struct snd_ctl_elem_value *ucontrol) 162 struct snd_ctl_elem_value *ucontrol)
163{ 163{
164 struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); 164 struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
165 struct wm_hubs_data *hubs = codec->private_data;
165 int ret; 166 int ret;
166 167
167 ret = snd_soc_put_volsw_2r(kcontrol, ucontrol); 168 ret = snd_soc_put_volsw_2r(kcontrol, ucontrol);
168 169
170 /* If we're applying an offset correction then updating the
171 * callibration would be likely to introduce further offsets. */
172 if (hubs->dcs_codes)
173 return ret;
174
169 /* Only need to do this if the outputs are active */ 175 /* Only need to do this if the outputs are active */
170 if (snd_soc_read(codec, WM8993_POWER_MANAGEMENT_1) 176 if (snd_soc_read(codec, WM8993_POWER_MANAGEMENT_1)
171 & (WM8993_HPOUT1L_ENA | WM8993_HPOUT1R_ENA)) 177 & (WM8993_HPOUT1L_ENA | WM8993_HPOUT1R_ENA))