ASoC: tas2770: Reinit regcache on reset
authorMartin Povišer <povik+lin@cutebit.org>
Mon, 19 Sep 2022 17:34:53 +0000 (19:34 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 19 Sep 2022 17:48:43 +0000 (18:48 +0100)
On probe of the ASoC component, the device is reset but the regcache is
retained. This means the regcache gets out of sync if the codec is
rebound to a sound card for a second time. Fix it by reinitializing the
regcache to defaults after the device is reset.

Fixes: b0bcbe615756 ("ASoC: tas2770: Fix calling reset in probe")
Signed-off-by: Martin Povišer <povik+lin@cutebit.org>
Link: https://lore.kernel.org/r/20220919173453.84292-1-povik+lin@cutebit.org
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/tas2770.c

index bb653b6..b676523 100644 (file)
@@ -495,6 +495,8 @@ static struct snd_soc_dai_driver tas2770_dai_driver[] = {
        },
 };
 
+static const struct regmap_config tas2770_i2c_regmap;
+
 static int tas2770_codec_probe(struct snd_soc_component *component)
 {
        struct tas2770_priv *tas2770 =
@@ -508,6 +510,7 @@ static int tas2770_codec_probe(struct snd_soc_component *component)
        }
 
        tas2770_reset(tas2770);
+       regmap_reinit_cache(tas2770->regmap, &tas2770_i2c_regmap);
 
        return 0;
 }