On Tue, Nov 28, 2023 at 04:47:27PM +0100, Marc Kleine-Budde wrote:
In probe() it wants to write to the regcache only, and then calls regmap_register_patch(). During probe the chip is unpowered and in reset:
| aic3x_probe() | regcache_cache_only(true); | regmap_register_patch();
That's not going to work well, patches always bypass the cache since they are often ordering dependent and if we understood what they were doing we should be writing them in normal code rather than just spamming in numbers. There was some edge case usage I can't remember right now (IIRC with partial cache sync) which meant that we didn't want to just assume that there'd be a full cache sync as the first action after leaving cache only mode.
If I only power on the codec in probe() for the regmap_register_patch(), I'll shut it down after the regmap_register_patch() anyways. So the register values are lost in any case.
Cache sync will reapply the patch, that's the _register() bit of the function name.