ASoC: codecs: uda1342: Leave cache-only mode before syncing

uda1342_suspend() puts the regmap into cache-only mode. uda1342_resume()
marks the cache dirty and syncs it, but does not first leave cache-only
mode and ignores sync failures.

Leave cache-only mode before syncing the dirty cache, propagate sync
failures, and restore cache-only/dirty state on failure.

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

View File

@ -308,9 +308,16 @@ static int uda1342_suspend(struct device *dev)
static int uda1342_resume(struct device *dev)
{
struct uda1342_priv *uda1342 = dev_get_drvdata(dev);
int ret;
regcache_cache_only(uda1342->regmap, false);
regcache_mark_dirty(uda1342->regmap);
regcache_sync(uda1342->regmap);
ret = regcache_sync(uda1342->regmap);
if (ret) {
regcache_cache_only(uda1342->regmap, true);
regcache_mark_dirty(uda1342->regmap);
return ret;
}
return 0;
}