Merge branch 'fix/sgtl5000' of https://git.kernel.org/pub/scm/linux/kernel/git/brooni...
authorMark Brown <broonie@kernel.org>
Fri, 16 Feb 2018 15:29:19 +0000 (15:29 +0000)
committerMark Brown <broonie@kernel.org>
Fri, 16 Feb 2018 15:29:19 +0000 (15:29 +0000)
1  2 
sound/soc/codecs/sgtl5000.c

@@@ -873,19 -873,30 +873,30 @@@ static int sgtl5000_pcm_hw_params(struc
   * stop:
   * on --> prepare --> standby
   */
 -static int sgtl5000_set_bias_level(struct snd_soc_codec *codec,
 +static int sgtl5000_set_bias_level(struct snd_soc_component *component,
                                   enum snd_soc_bias_level level)
  {
 -      struct sgtl5000_priv *sgtl = snd_soc_codec_get_drvdata(codec);
++      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:
 -              snd_soc_update_bits(codec, SGTL5000_CHIP_ANA_POWER,
+               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:
 -              snd_soc_update_bits(codec, SGTL5000_CHIP_ANA_POWER,
+               regcache_cache_only(sgtl->regmap, true);
 +              snd_soc_component_update_bits(component, SGTL5000_CHIP_ANA_POWER,
                                    SGTL5000_REFTOP_POWERUP, 0);
                break;
        }