ASoC: codecs/jz4770: Reset interrupt flags in bias PREPARE
authorChristophe Branchereau <cbranchereau@gmail.com>
Mon, 7 Dec 2020 12:53:34 +0000 (12:53 +0000)
committerMark Brown <broonie@kernel.org>
Wed, 9 Dec 2020 12:13:41 +0000 (12:13 +0000)
In case a poll for RUP times out, we might be left with some IRQ flags
that should be cleared before the next power on.

Signed-off-by: Christophe Branchereau <cbranchereau@gmail.com>
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Link: https://lore.kernel.org/r/20201207125338.119397-2-paul@crapouillou.net
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/jz4770.c

index c6b2043..002f230 100644 (file)
@@ -190,6 +190,9 @@ static int jz4770_codec_set_bias_level(struct snd_soc_component *codec,
 
        switch (level) {
        case SND_SOC_BIAS_PREPARE:
+               /* Reset all interrupt flags. */
+               regmap_write(regmap, JZ4770_CODEC_REG_IFR, REG_IFR_ALL_MASK);
+
                regmap_clear_bits(regmap, JZ4770_CODEC_REG_CR_VIC,
                                  REG_CR_VIC_SB);
                msleep(250);
@@ -642,9 +645,6 @@ static void jz4770_codec_codec_init_regs(struct snd_soc_component *codec)
        /* Send collected updates. */
        regcache_cache_only(regmap, false);
        regcache_sync(regmap);
-
-       /* Reset all interrupt flags. */
-       regmap_write(regmap, JZ4770_CODEC_REG_IFR, REG_IFR_ALL_MASK);
 }
 
 static int jz4770_codec_codec_probe(struct snd_soc_component *codec)