diff options
| author | Mark Brown <broonie@kernel.org> | 2025-12-04 11:38:30 +0000 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2025-12-04 11:38:30 +0000 |
| commit | 9b30ceba1c1d7973f62a6d63b520f275e312e22a (patch) | |
| tree | 8982669cfd77f1d0ec78c0761d4e95b532019598 /sound | |
| parent | 39191ce5dbfd65fededb4f0d408d6232c45766ba (diff) | |
| parent | 1f8f726a2a29c28f65b30880335a1610c5e63594 (diff) | |
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.
Diffstat (limited to 'sound')
| -rw-r--r-- | sound/soc/codecs/ak4458.c | 10 | ||||
| -rw-r--r-- | sound/soc/codecs/ak5558.c | 10 |
2 files changed, 18 insertions, 2 deletions
diff --git a/sound/soc/codecs/ak4458.c b/sound/soc/codecs/ak4458.c index f0b465f9ded5..783d2ef21c11 100644 --- a/sound/soc/codecs/ak4458.c +++ b/sound/soc/codecs/ak4458.c @@ -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 = { diff --git a/sound/soc/codecs/ak5558.c b/sound/soc/codecs/ak5558.c index 683f3e472f50..73684fc5beb1 100644 --- a/sound/soc/codecs/ak5558.c +++ b/sound/soc/codecs/ak5558.c @@ -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 = { |
