ASoC: codecs: rt1320-sdw: Propagate regcache_sync() errors

rt1320_dev_resume() clears cache-only mode for both regmaps and
replays cached register state into the device. Both regcache_sync()
calls currently ignore their return values, so resume can report
success even if either replay failed.

Check both sync operations and return the first error. On failure,
restore both regmaps to cache-only mode and mark both caches dirty,
so a later successful resume attempt starts from a coherent suspended
cache state instead of a partially live pair of regmaps.

Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn>
Link: https://patch.msgid.link/20260704040418.28181-1-pengpeng@iscas.ac.cn
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Pengpeng Hou 2026-07-04 12:04:18 +08:00 committed by Mark Brown
parent a407338ca6
commit 39dadd459c
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0

View File

@ -3626,10 +3626,23 @@ static int rt1320_dev_resume(struct device *dev)
return ret;
regcache_cache_only(rt1320->regmap, false);
regcache_sync(rt1320->regmap);
ret = regcache_sync(rt1320->regmap);
if (ret)
goto err_sync;
regcache_cache_only(rt1320->mbq_regmap, false);
regcache_sync(rt1320->mbq_regmap);
ret = regcache_sync(rt1320->mbq_regmap);
if (ret)
goto err_sync;
return 0;
err_sync:
regcache_cache_only(rt1320->regmap, true);
regcache_cache_only(rt1320->mbq_regmap, true);
regcache_mark_dirty(rt1320->regmap);
regcache_mark_dirty(rt1320->mbq_regmap);
return ret;
}
static const struct dev_pm_ops rt1320_pm = {