aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/wm8903.c
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2008-12-10 14:27:10 -0500
committerMark Brown <broonie@opensource.wolfsonmicro.com>2008-12-10 14:47:45 -0500
commit3b1228abc93f7ab0aa28c46341d6a0f7e2cade70 (patch)
treec31fa3b9a9e25b998d2c07aad238588d40795e9b /sound/soc/codecs/wm8903.c
parentd58d5d5567ea9483346f57c83a94ce05992cd47c (diff)
ASoC: Stop WM8903 SYSCLK when suspending
This will save some additional power. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc/codecs/wm8903.c')
-rw-r--r--sound/soc/codecs/wm8903.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sound/soc/codecs/wm8903.c b/sound/soc/codecs/wm8903.c
index c80968fe326e..bde74546db4a 100644
--- a/sound/soc/codecs/wm8903.c
+++ b/sound/soc/codecs/wm8903.c
@@ -997,6 +997,9 @@ static int wm8903_set_bias_level(struct snd_soc_codec *codec,
997 997
998 case SND_SOC_BIAS_STANDBY: 998 case SND_SOC_BIAS_STANDBY:
999 if (codec->bias_level == SND_SOC_BIAS_OFF) { 999 if (codec->bias_level == SND_SOC_BIAS_OFF) {
1000 wm8903_write(codec, WM8903_CLOCK_RATES_2,
1001 WM8903_CLK_SYS_ENA);
1002
1000 wm8903_run_sequence(codec, 0); 1003 wm8903_run_sequence(codec, 0);
1001 wm8903_sync_reg_cache(codec, codec->reg_cache); 1004 wm8903_sync_reg_cache(codec, codec->reg_cache);
1002 1005
@@ -1027,6 +1030,9 @@ static int wm8903_set_bias_level(struct snd_soc_codec *codec,
1027 1030
1028 case SND_SOC_BIAS_OFF: 1031 case SND_SOC_BIAS_OFF:
1029 wm8903_run_sequence(codec, 32); 1032 wm8903_run_sequence(codec, 32);
1033 reg = wm8903_read(codec, WM8903_CLOCK_RATES_2);
1034 reg &= ~WM8903_CLK_SYS_ENA;
1035 wm8903_write(codec, WM8903_CLOCK_RATES_2, reg);
1030 break; 1036 break;
1031 } 1037 }
1032 1038
@@ -1619,9 +1625,6 @@ static int wm8903_i2c_probe(struct i2c_client *i2c,
1619 1625
1620 wm8903_reset(codec); 1626 wm8903_reset(codec);
1621 1627
1622 /* SYSCLK is required for pretty much anything */
1623 wm8903_write(codec, WM8903_CLOCK_RATES_2, WM8903_CLK_SYS_ENA);
1624
1625 /* power on device */ 1628 /* power on device */
1626 wm8903_set_bias_level(codec, SND_SOC_BIAS_STANDBY); 1629 wm8903_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
1627 1630