Re: [REGRESSION] ASoC: rt721-sdca: runtime resume fails with -ENODATA since v7.3, jack PCMs cannot be opened

From: Bui Duc Phuc

Date: Sun Nov 01 2026 - 23:07:20 EST


Hi all,

>> 7a0886826308 ("ASoC: codecs:
>> rt721-sdca-sdw: Propagate regcache_sync() errors"), later simplified by
>> 2df329044c61, makes the resume return that error.

Thanks Egor for the detailed report, and Robin for confirming it.

I wrote 2df329044c61. Besides simplifying the error path, it dropped
the regcache_mark_dirty() calls there. The commit message calls them
redundant, but they also set no_sync_defaults, so with them a retry
would skip entries still at their defaults. Without them, every retry
writes the whole cache back again, defaults included, and fails on
PDE23 again. I still think dropping them is right: after a failed sync we can't
assume the hardware is at its defaults, so writing everything back is
the safe choice.

Adding regcache_mark_dirty() back might make retries pass, but only
because the rejected registers still have their default values. I
have only looked at the code, not tested it. The first resume would
still fail, so I don't think it fixes the cause.

I think the real problem is that the sync writes registers the codec
does not accept. This was already happening before 7a0886826308, the
error was just ignored. regcache_reg_needs_sync() does not sync
registers that are not writable, but rt721 has no writeable_reg, so
regmap treats all registers as writable.

Maybe rt721 should have a writeable_reg callback. But I don't have
the datasheet, so I don't know which registers should be left out.
In Egor's traces PDE23 REQ_POWER_STATE is rejected. Can Realtek tell
us which registers can be written on rt721?

Egor's patch looks like a good minimal fix to me in the meantime.

Best regards,
Phuc