Since the driver doesn't expose any controls to userspace the only things that can cause register writes are the operations provided by the CODEC driver, they could take the lock for their runtime (which is about the level the v4l stuff is running at AIUI).
Do you mean moving it to si476x_codec_set_dai_fmt and si476x_codec_hw_params? If those are the only two places where register read and write are called by SoC sound subsystem then I think that would work.
This still won't fix the issue with the device being powered off but I guess that normal usage patterns will have powered the device up to do tuning or something prior to audio being started
You mean the issue cause by my forgetting to sync cache on power up? That would be a subject for a separate patch.