]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: ak5558: Disable regulator when error happens
authorShengjiu Wang <shengjiu.wang@nxp.com>
Wed, 3 Dec 2025 10:05:29 +0000 (18:05 +0800)
committerMark Brown <broonie@kernel.org>
Wed, 3 Dec 2025 12:38:14 +0000 (12:38 +0000)
Disable regulator in runtime resume when error happens to balance
the reference count of regulator.

Fixes: 2ff6d5a108c6 ("ASoC: ak5558: Add regulator support")
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://patch.msgid.link/20251203100529.3841203-3-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/ak5558.c

index 683f3e472f5000d18910282f33ca2a1daa5dcbc8..73684fc5beb1a72359ad3e920f71fe18f84eb16e 100644 (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 = {