ASoC: codecs: ES8389: Modify volatile_register

Mark some registers that are not volatile as false
And modified the logic for `cache_bypass` during `8389_resume`.

Signed-off-by: Zhang Yi <zhangyi@everest-semi.com>
Link: https://patch.msgid.link/20260630072311.8427-2-zhangyi@everest-semi.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Zhang Yi 2026-06-30 15:23:06 +08:00 committed by Mark Brown
parent dc59e4fea9
commit 882e550311
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0

View File

@ -50,10 +50,29 @@ static const char * const es8389_core_supplies[] = {
static bool es8389_volatile_register(struct device *dev,
unsigned int reg)
{
if ((reg <= 0xff))
return true;
else
switch (reg) {
case ES8389_ADCL_VOL:
case ES8389_ADCR_VOL:
case ES8389_MIC1_GAIN:
case ES8389_MIC2_GAIN:
case ES8389_DACL_VOL:
case ES8389_DACR_VOL:
case ES8389_ALC_ON:
case ES8389_ALC_CTL:
case ES8389_ALC_TARGET:
case ES8389_ALC_GAIN:
case ES8389_ADC_MUTE:
case ES8389_OSR_VOL:
case ES8389_DAC_INV:
case ES8389_MIX_VOL:
case ES8389_DAC_MIX:
case ES8389_ADC_RESET:
case ES8389_ADC_MODE:
case ES8389_DMIC_EN:
return false;
default:
return true;
}
}
static const DECLARE_TLV_DB_SCALE(dac_vol_tlv, -9550, 50, 0);
@ -861,13 +880,13 @@ static int es8389_resume(struct snd_soc_component *component)
regcache_cache_only(es8389->regmap, false);
regcache_cache_bypass(es8389->regmap, true);
regmap_read(es8389->regmap, ES8389_RESET, &regv);
regcache_cache_bypass(es8389->regmap, false);
if (regv == 0xff)
es8389_init(component);
else
es8389_set_bias_level(component, SND_SOC_BIAS_ON);
regcache_cache_bypass(es8389->regmap, false);
regcache_sync(es8389->regmap);
return 0;