diff options
| -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 | ||
