[PATCH v4 27/29] ASoC: codecs: rt721-sdca-sdw: Simplify regcache error handling in resume

From: phucduc . bui

Date: Tue Jul 21 2026 - 06:47:40 EST


From: bui duc phuc <phucduc.bui@xxxxxxxxx>

Calling regcache_mark_dirty() on error is redundant as regcache_sync()
retains dirty state on failure, and any write in cache_only mode marks
the cache dirty anyway.
Restore cache_only directly on error for active regmaps and drop the
redundant regcache_mark_dirty() calls. This also removes goto labels
to prepare for guard cleanup.

Signed-off-by: bui duc phuc <phucduc.bui@xxxxxxxxx>
---
sound/soc/codecs/rt721-sdca-sdw.c | 20 +++++++++-----------
1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/sound/soc/codecs/rt721-sdca-sdw.c b/sound/soc/codecs/rt721-sdca-sdw.c
index 6e27e761afb6..6411df4eede7 100644
--- a/sound/soc/codecs/rt721-sdca-sdw.c
+++ b/sound/soc/codecs/rt721-sdca-sdw.c
@@ -511,22 +511,20 @@ static int rt721_sdca_dev_resume(struct device *dev)

regcache_cache_only(rt721->regmap, false);
ret = regcache_sync(rt721->regmap);
- if (ret)
- goto err_sync;
+ if (ret) {
+ regcache_cache_only(rt721->regmap, true);
+ return ret;
+ }

regcache_cache_only(rt721->mbq_regmap, false);
ret = regcache_sync(rt721->mbq_regmap);
- if (ret)
- goto err_sync;
+ if (ret) {
+ regcache_cache_only(rt721->mbq_regmap, true);
+ regcache_cache_only(rt721->regmap, true);
+ return ret;
+ }

return 0;
-
-err_sync:
- regcache_cache_only(rt721->regmap, true);
- regcache_cache_only(rt721->mbq_regmap, true);
- regcache_mark_dirty(rt721->regmap);
- regcache_mark_dirty(rt721->mbq_regmap);
- return ret;
}

static const struct dev_pm_ops rt721_sdca_pm = {
--
2.43.0