On the machines with the ucm used, the different input/output devices often have different pcm stream, so they often belong to different sources and sinks, this is greatly different from the design of all devices connected to a codec (without ucm).
For example, on a machine with ucm2 used: the internal dmic is on source#0 the external mic is on the source#1 the internal spk is on sink#0 the external headphone is on sink#1
Users expect that after plugging the external device, it will become the active device automatically. The switch-on-port-available could make it to be the active_port on its own source/sink, but can't make source/sink to be default_source/sink since the sources/sinks belong to the same profile (HiFi usually).
If we adjust the source/sink priority according to ucm ports priority, the device_port.c could handle the default_source/sink changing then. Usually we set higher priority for external device than internal device in the ucm.
In order to bring the lowest side effect on the source/sink priority, I change the ucm priority to units digit first, then add it to the original priority.