mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
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:
parent
a407338ca6
commit
39dadd459c
|
|
@ -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 = {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user