If I understand you well, the sync id should be a unique identifier shared by all linked streams in the same group.
Just to clarify: does the sync id identify streams that are linked, or streams that can be started atomically when linked? Because at the moment, all drivers implement the latter. Furthermore, it's possible to link completely unrelated devices, so not even the card number could be used for the former.
I may have a very Intel-centric view, but it should be the former, identify all streams currently linked. All devices controlled by the same HDAudio controller can be linked at any time, providing the list of possible streams to link to does help anyone since the information is known by default. However, I've also seen that a lot of non-HDAudio drivers seem to provide the ability to link only playback and capture for synchronized full-duplex operation. This is a much simpler case than multiple playback/capture devices, most serial links (SSI, McBSP, SSP, etc) provide such capabilities. Bottom line is that maybe the sync information needs to provide both the devices that can be linked and the devices currently linked.
Regarding the card #, linking between devices handled by different controllers is not supported in hardware, only 32 devices controlled with the same SSYNC register can be linked. In addition there are tests in the HDAudio code to yank devices with a different card number from the group (see azx_pcm_trigger() in hda_intel.c) -Pierre