]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
ASoC: codecs: ES8326: regcache_sync error issue
authorZhang Yi <zhangyi@everest-semi.com>
Mon, 24 Jun 2024 03:06:07 +0000 (11:06 +0800)
committerMark Brown <broonie@kernel.org>
Mon, 24 Jun 2024 12:38:26 +0000 (13:38 +0100)
We modified the regmap_config members to fix cach sync error.
There are several registers that should be read-only registers.
If these registers are written while synchronizing the register values,
the codec will enter an error state.So we create es8326_writeable_register,
and set these registers to false

Signed-off-by: Zhang Yi <zhangyi@everest-semi.com>
Link: https://patch.msgid.link/20240624030607.4307-5-zhangyi@everest-semi.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/es8326.c

index 55edab04fa4b6b675d05ecda7d77ef5cd537c7f2..b246694ebb4faa4d7aab7de3c9145eeed9e124b9 100644 (file)
@@ -329,11 +329,29 @@ static bool es8326_volatile_register(struct device *dev, unsigned int reg)
        }
 }
 
+static bool es8326_writeable_register(struct device *dev, unsigned int reg)
+{
+       switch (reg) {
+       case ES8326_BIAS_SW1:
+       case ES8326_BIAS_SW2:
+       case ES8326_BIAS_SW3:
+       case ES8326_BIAS_SW4:
+       case ES8326_ADC_HPFS1:
+       case ES8326_ADC_HPFS2:
+               return false;
+       default:
+               return true;
+       }
+}
+
 static const struct regmap_config es8326_regmap_config = {
        .reg_bits = 8,
        .val_bits = 8,
        .max_register = 0xff,
+       .use_single_read = true,
+       .use_single_write = true,
        .volatile_reg = es8326_volatile_register,
+       .writeable_reg = es8326_writeable_register,
        .cache_type = REGCACHE_RBTREE,
 };