From 5e5ea96e68c7751a3d38827f8d11b68810872e8f Mon Sep 17 00:00:00 2001 From: Pengpeng Hou Date: Sat, 4 Jul 2026 11:59:57 +0800 Subject: [PATCH] ASoC: codecs: cs35l32: Propagate regcache_sync() errors regcache_sync() can fail while replaying cached register state during runtime resume. cs35l32_runtime_resume() currently ignores that failure. Propagate the error, restore cache-only/dirty state, and unwind the reset and supply state acquired by runtime resume. Signed-off-by: Pengpeng Hou Link: https://patch.msgid.link/20260704035957.97236-1-pengpeng@iscas.ac.cn Signed-off-by: Mark Brown --- sound/soc/codecs/cs35l32.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/cs35l32.c b/sound/soc/codecs/cs35l32.c index c835088de578..8288fb6d50be 100644 --- a/sound/soc/codecs/cs35l32.c +++ b/sound/soc/codecs/cs35l32.c @@ -538,7 +538,15 @@ static int cs35l32_runtime_resume(struct device *dev) gpiod_set_value_cansleep(cs35l32->reset_gpio, 1); regcache_cache_only(cs35l32->regmap, false); - regcache_sync(cs35l32->regmap); + ret = regcache_sync(cs35l32->regmap); + if (ret) { + regcache_cache_only(cs35l32->regmap, true); + regcache_mark_dirty(cs35l32->regmap); + gpiod_set_value_cansleep(cs35l32->reset_gpio, 0); + regulator_bulk_disable(ARRAY_SIZE(cs35l32->supplies), + cs35l32->supplies); + return ret; + } return 0; }