diff options
author | Axel Lin <axel.lin@gmail.com> | 2011-10-07 09:37:54 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-10-10 05:29:57 -0400 |
commit | 960622da0d0583637e5d2de85b4202cbfc0981c6 (patch) | |
tree | fd984e2e0ad379347c606deb0128a02102f02a75 | |
parent | 94f17e9cfa73d496c2289f02d2002465b79b0931 (diff) |
ASoC: wm8711: Convert to snd_soc_cache_sync
Convert to snd_soc_cache_sync for sync reg_cache with the hardware.
Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r-- | sound/soc/codecs/wm8711.c | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/sound/soc/codecs/wm8711.c b/sound/soc/codecs/wm8711.c index 7475428d5588..8d0347cf0e9a 100644 --- a/sound/soc/codecs/wm8711.c +++ b/sound/soc/codecs/wm8711.c | |||
@@ -287,7 +287,6 @@ static int wm8711_set_dai_fmt(struct snd_soc_dai *codec_dai, | |||
287 | return 0; | 287 | return 0; |
288 | } | 288 | } |
289 | 289 | ||
290 | |||
291 | static int wm8711_set_bias_level(struct snd_soc_codec *codec, | 290 | static int wm8711_set_bias_level(struct snd_soc_codec *codec, |
292 | enum snd_soc_bias_level level) | 291 | enum snd_soc_bias_level level) |
293 | { | 292 | { |
@@ -300,6 +299,9 @@ static int wm8711_set_bias_level(struct snd_soc_codec *codec, | |||
300 | case SND_SOC_BIAS_PREPARE: | 299 | case SND_SOC_BIAS_PREPARE: |
301 | break; | 300 | break; |
302 | case SND_SOC_BIAS_STANDBY: | 301 | case SND_SOC_BIAS_STANDBY: |
302 | if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) | ||
303 | snd_soc_cache_sync(codec); | ||
304 | |||
303 | snd_soc_write(codec, WM8711_PWR, reg | 0x0040); | 305 | snd_soc_write(codec, WM8711_PWR, reg | 0x0040); |
304 | break; | 306 | break; |
305 | case SND_SOC_BIAS_OFF: | 307 | case SND_SOC_BIAS_OFF: |
@@ -346,18 +348,7 @@ static int wm8711_suspend(struct snd_soc_codec *codec, pm_message_t state) | |||
346 | 348 | ||
347 | static int wm8711_resume(struct snd_soc_codec *codec) | 349 | static int wm8711_resume(struct snd_soc_codec *codec) |
348 | { | 350 | { |
349 | int i; | ||
350 | u8 data[2]; | ||
351 | u16 *cache = codec->reg_cache; | ||
352 | |||
353 | /* Sync reg_cache with the hardware */ | ||
354 | for (i = 0; i < ARRAY_SIZE(wm8711_reg); i++) { | ||
355 | data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001); | ||
356 | data[1] = cache[i] & 0x00ff; | ||
357 | codec->hw_write(codec->control_data, data, 2); | ||
358 | } | ||
359 | wm8711_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | 351 | wm8711_set_bias_level(codec, SND_SOC_BIAS_STANDBY); |
360 | |||
361 | return 0; | 352 | return 0; |
362 | } | 353 | } |
363 | 354 | ||