So do you think it would be a good idea to generate Rust register
definitions (or whatever these are called) from the headers instead of
SVD files?
No, the SVD files contain more information, but it would be a good idea to compare the two and maybe have a way to fix the SVD files that way.
You'd also be able to "specialize" the SVD files better for the device, because at the moment the SVD files are very coarse and you therefore generate code for peripherals that don't exist for your device.
Whatever you do, it MUST be automated and reproducible. Then you can commit the fixed SVD files and still incorporate fixes by the vendors.
Cheers,
Niklas