diff options
-rw-r--r-- | sound/soc/codecs/sgtl5000.c | 35 |
1 files changed, 5 insertions, 30 deletions
diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c index 0916bb46ccf2..39a178a88b36 100644 --- a/sound/soc/codecs/sgtl5000.c +++ b/sound/soc/codecs/sgtl5000.c | |||
@@ -761,42 +761,17 @@ static int sgtl5000_pcm_hw_params(struct snd_pcm_substream *substream, | |||
761 | static int sgtl5000_set_bias_level(struct snd_soc_codec *codec, | 761 | static int sgtl5000_set_bias_level(struct snd_soc_codec *codec, |
762 | enum snd_soc_bias_level level) | 762 | enum snd_soc_bias_level level) |
763 | { | 763 | { |
764 | int ret; | ||
765 | struct sgtl5000_priv *sgtl5000 = snd_soc_codec_get_drvdata(codec); | ||
766 | |||
767 | switch (level) { | 764 | switch (level) { |
768 | case SND_SOC_BIAS_ON: | 765 | case SND_SOC_BIAS_ON: |
769 | case SND_SOC_BIAS_PREPARE: | 766 | case SND_SOC_BIAS_PREPARE: |
770 | break; | ||
771 | case SND_SOC_BIAS_STANDBY: | 767 | case SND_SOC_BIAS_STANDBY: |
772 | if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) { | 768 | snd_soc_update_bits(codec, SGTL5000_CHIP_ANA_POWER, |
773 | ret = regulator_bulk_enable( | 769 | SGTL5000_REFTOP_POWERUP, |
774 | sgtl5000->num_supplies, | 770 | SGTL5000_REFTOP_POWERUP); |
775 | sgtl5000->supplies); | ||
776 | if (ret) | ||
777 | return ret; | ||
778 | udelay(10); | ||
779 | |||
780 | regcache_cache_only(sgtl5000->regmap, false); | ||
781 | |||
782 | ret = regcache_sync(sgtl5000->regmap); | ||
783 | if (ret != 0) { | ||
784 | dev_err(codec->dev, | ||
785 | "Failed to restore cache: %d\n", ret); | ||
786 | |||
787 | regcache_cache_only(sgtl5000->regmap, true); | ||
788 | regulator_bulk_disable(sgtl5000->num_supplies, | ||
789 | sgtl5000->supplies); | ||
790 | |||
791 | return ret; | ||
792 | } | ||
793 | } | ||
794 | |||
795 | break; | 771 | break; |
796 | case SND_SOC_BIAS_OFF: | 772 | case SND_SOC_BIAS_OFF: |
797 | regcache_cache_only(sgtl5000->regmap, true); | 773 | snd_soc_update_bits(codec, SGTL5000_CHIP_ANA_POWER, |
798 | regulator_bulk_disable(sgtl5000->num_supplies, | 774 | SGTL5000_REFTOP_POWERUP, 0); |
799 | sgtl5000->supplies); | ||
800 | break; | 775 | break; |
801 | } | 776 | } |
802 | 777 | ||