summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShengjiu Wang <shengjiu.wang@nxp.com>2025-12-03 18:05:28 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-12-18 13:55:18 +0100
commit436602fc10f7e62b3835483e009e7515c034ff64 (patch)
tree790ebc04a7ca91fee07122154098b6748f1338fb
parent7131bff8d2198f6face322ea70899228880a7473 (diff)
downloadlinux-436602fc10f7e62b3835483e009e7515c034ff64.tar.gz
linux-436602fc10f7e62b3835483e009e7515c034ff64.tar.bz2
linux-436602fc10f7e62b3835483e009e7515c034ff64.zip
ASoC: ak4458: Disable regulator when error happens
[ Upstream commit ae585fabb9713a43e358cf606451386757225c95 ] 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> Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--sound/soc/codecs/ak4458.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/sound/soc/codecs/ak4458.c b/sound/soc/codecs/ak4458.c
index d472d9952628..fb1ab335a4c1 100644
--- a/sound/soc/codecs/ak4458.c
+++ b/sound/soc/codecs/ak4458.c
@@ -676,7 +676,15 @@ static int __maybe_unused 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;
}
#endif /* CONFIG_PM */