diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2008-12-10 14:27:10 -0500 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2008-12-10 14:47:45 -0500 |
commit | 3b1228abc93f7ab0aa28c46341d6a0f7e2cade70 (patch) | |
tree | c31fa3b9a9e25b998d2c07aad238588d40795e9b /sound/soc/codecs/wm8903.c | |
parent | d58d5d5567ea9483346f57c83a94ce05992cd47c (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.c | 9 |
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 | ||