diff options
author | Mark Brown <broonie@kernel.org> | 2018-02-16 15:29:19 +0000 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2018-02-16 15:29:19 +0000 |
commit | 27a4b3f98ba25923ce1016f8341a382843e3cd79 (patch) | |
tree | df2097ecd6426ad168c807cb02f32cf65d1b0466 /sound/soc/codecs/sgtl5000.c | |
parent | 58fadc19e484a6269521eede6bdb1030d2dc18c0 (diff) | |
parent | a8992973edbb2555e956b90f6fe97c4bc14d761d (diff) | |
download | talos-op-linux-27a4b3f98ba25923ce1016f8341a382843e3cd79.tar.gz talos-op-linux-27a4b3f98ba25923ce1016f8341a382843e3cd79.zip |
Merge branch 'fix/sgtl5000' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-sgtl5000
Diffstat (limited to 'sound/soc/codecs/sgtl5000.c')
-rw-r--r-- | sound/soc/codecs/sgtl5000.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c index 975a9d76b37f..05592ddcf0e6 100644 --- a/sound/soc/codecs/sgtl5000.c +++ b/sound/soc/codecs/sgtl5000.c @@ -876,15 +876,26 @@ static int sgtl5000_pcm_hw_params(struct snd_pcm_substream *substream, static int sgtl5000_set_bias_level(struct snd_soc_component *component, enum snd_soc_bias_level level) { + struct sgtl5000_priv *sgtl = snd_soc_component_get_drvdata(component); + int ret; + switch (level) { case SND_SOC_BIAS_ON: case SND_SOC_BIAS_PREPARE: case SND_SOC_BIAS_STANDBY: + regcache_cache_only(sgtl->regmap, false); + ret = regcache_sync(sgtl->regmap); + if (ret) { + regcache_cache_only(sgtl->regmap, true); + return ret; + } + snd_soc_component_update_bits(component, SGTL5000_CHIP_ANA_POWER, SGTL5000_REFTOP_POWERUP, SGTL5000_REFTOP_POWERUP); break; case SND_SOC_BIAS_OFF: + regcache_cache_only(sgtl->regmap, true); snd_soc_component_update_bits(component, SGTL5000_CHIP_ANA_POWER, SGTL5000_REFTOP_POWERUP, 0); break; |