diff options
| author | Shengjiu Wang <shengjiu.wang@nxp.com> | 2025-12-03 18:05:28 +0800 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2025-12-03 12:38:13 +0000 |
| commit | ae585fabb9713a43e358cf606451386757225c95 (patch) | |
| tree | a693f3347e67063d15fff093af8a76436aaa6bcd | |
| parent | 2b69bee5a2d07bc0583f2a8f17d262ddf7c58466 (diff) | |
ASoC: ak4458: Disable regulator when error happens
Disable regulator in runtime resume when error happens to balance
the reference count of regulator.
Fixes: 7e3096e8f823 ("ASoC: ak4458: Add regulator support")
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://patch.msgid.link/20251203100529.3841203-2-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
| -rw-r--r-- | sound/soc/codecs/ak4458.c | 10 |
1 files changed, 9 insertions, 1 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 = { |
