ASoC: ak4458 & ak5558: disable regulator if error

Merge series from Shengjiu Wang <shengjiu.wang@nxp.com>:

Disable regulator when error happens to balance the reference count.
master
Mark Brown 2025-12-04 11:38:30 +00:00
commit 9b30ceba1c
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0
2 changed files with 18 additions and 2 deletions

View File

@ -671,7 +671,15 @@ static int ak4458_runtime_resume(struct device *dev)
regcache_cache_only(ak4458->regmap, false);
regcache_mark_dirty(ak4458->regmap);
return regcache_sync(ak4458->regmap);
ret = regcache_sync(ak4458->regmap);
if (ret)
goto err;
return 0;
err:
regcache_cache_only(ak4458->regmap, true);
regulator_bulk_disable(ARRAY_SIZE(ak4458->supplies), ak4458->supplies);
return ret;
}
static const struct snd_soc_component_driver soc_codec_dev_ak4458 = {

View File

@ -372,7 +372,15 @@ static int ak5558_runtime_resume(struct device *dev)
regcache_cache_only(ak5558->regmap, false);
regcache_mark_dirty(ak5558->regmap);
return regcache_sync(ak5558->regmap);
ret = regcache_sync(ak5558->regmap);
if (ret)
goto err;
return 0;
err:
regcache_cache_only(ak5558->regmap, true);
regulator_bulk_disable(ARRAY_SIZE(ak5558->supplies), ak5558->supplies);
return ret;
}
static const struct dev_pm_ops ak5558_pm = {