From 9497ea79d71916c2e782b20cbcf9047a58c74a98 Mon Sep 17 00:00:00 2001 From: Pengpeng Hou Date: Sat, 4 Jul 2026 12:00:44 +0800 Subject: [PATCH] ASoC: codecs: wm2200: Propagate regcache_sync() errors regcache_sync() can fail while replaying cached register state during runtime resume. wm2200_runtime_resume() currently ignores that failure. Propagate the error, restore cache-only/dirty state, and unwind the LDO and core supplies acquired by runtime resume. Signed-off-by: Pengpeng Hou Reviewed-by: Richard Fitzgerald Link: https://patch.msgid.link/20260704040044.2402-1-pengpeng@iscas.ac.cn Signed-off-by: Mark Brown --- sound/soc/codecs/wm2200.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/wm2200.c b/sound/soc/codecs/wm2200.c index ba8ce2e6e615..bc78b553b6cb 100644 --- a/sound/soc/codecs/wm2200.c +++ b/sound/soc/codecs/wm2200.c @@ -2461,7 +2461,15 @@ static int wm2200_runtime_resume(struct device *dev) } regcache_cache_only(wm2200->regmap, false); - regcache_sync(wm2200->regmap); + ret = regcache_sync(wm2200->regmap); + if (ret) { + regcache_cache_only(wm2200->regmap, true); + regcache_mark_dirty(wm2200->regmap); + gpiod_set_value_cansleep(wm2200->ldo_ena, 0); + regulator_bulk_disable(ARRAY_SIZE(wm2200->core_supplies), + wm2200->core_supplies); + return ret; + } return 0; }