aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2010-11-26 12:23:44 -0500
committerMark Brown <broonie@opensource.wolfsonmicro.com>2010-11-27 05:32:13 -0500
commit11cef5f07ba0e925af432fc3229fb87585ccccf0 (patch)
treef8d2391b7d578ce46cb460f95dfe0d24cc224d6b
parent4b666729010cbf315c9099b956b193df8edc6753 (diff)
ASoC: Use DC servo startup mode when not doing DCS correction
Devices which do not have a DCS correction applied can use the explicit DC servo startup mode for optimal startup performance. This most immediately affects the WM8958. 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.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/sound/soc/codecs/wm_hubs.c b/sound/soc/codecs/wm_hubs.c
index e7a19d6ada50..b24ba9fa7ef7 100644
--- a/sound/soc/codecs/wm_hubs.c
+++ b/sound/soc/codecs/wm_hubs.c
@@ -105,12 +105,20 @@ static void calibrate_dc_servo(struct snd_soc_codec *codec)
105 return; 105 return;
106 } 106 }
107 107
108 /* Set for 32 series updates */ 108 /* Devices not using a DCS code correction have startup mode */
109 snd_soc_update_bits(codec, WM8993_DC_SERVO_1, 109 if (hubs->dcs_codes) {
110 WM8993_DCS_SERIES_NO_01_MASK, 110 /* Set for 32 series updates */
111 32 << WM8993_DCS_SERIES_NO_01_SHIFT); 111 snd_soc_update_bits(codec, WM8993_DC_SERVO_1,
112 wait_for_dc_servo(codec, 112 WM8993_DCS_SERIES_NO_01_MASK,
113 WM8993_DCS_TRIG_SERIES_0 | WM8993_DCS_TRIG_SERIES_1); 113 32 << WM8993_DCS_SERIES_NO_01_SHIFT);
114 wait_for_dc_servo(codec,
115 WM8993_DCS_TRIG_SERIES_0 |
116 WM8993_DCS_TRIG_SERIES_1);
117 } else {
118 wait_for_dc_servo(codec,
119 WM8993_DCS_TRIG_STARTUP_0 |
120 WM8993_DCS_TRIG_STARTUP_1);
121 }
114 122
115 /* Different chips in the family support different readback 123 /* Different chips in the family support different readback
116 * methods. 124 * methods.