Thanks, looks good. I've opened (https://gitlab.winehq.org/wine/wine/-/merge_requests/6276) with the changes split and a couple of adjustments to some make future changes easier.
I think we could parse additional information from the "input" subsystem, as well as (possibly) use the PHYS strings to implement device container IDs (https://gitlab.winehq.org/wine/wine/-/merge_requests/535) which are needed for some applications to match between controllers and audio devices with the Dualshock controllers. As far as I can see pulseaudio exposes the same string in its device names.