The PCI device registers contain a subsystem ID (SSID), that is separate from the silicon ID. The PCI specification defines it thus:
"They provide a mechanism for board vendors to distiguish their boards from one another even thought the boards may have the same PCI controller on them."
This allows the driver for the silicon part to apply board-speficic settings based on this SSID.
The CS35L56 driver uses this to select the correct firmware file for the board. The actual ID is part of the PCI register set of the host audio interface so this set of patches includes extracting the SSID from the Intel audio controller and passing it to the machine driver and then to ASoC components. Other PCI audio controllers will have the same SSID registers, so can use the same mechanism to pass the SSID.
Richard Fitzgerald (4): ASoC: soc-card: Add storage for PCI SSID ASoC: SOF: Pass PCI SSID to machine driver ASoC: Intel: sof_sdw: Copy PCI SSID to struct snd_soc_card ASoC: cs35l56: Use PCI SSID as the firmware UID
include/sound/soc-acpi.h | 7 ++++++ include/sound/soc-card.h | 37 ++++++++++++++++++++++++++++++++ include/sound/soc.h | 11 ++++++++++ include/sound/sof.h | 8 +++++++ sound/soc/codecs/cs35l56.c | 11 ++++++++++ sound/soc/intel/boards/sof_sdw.c | 6 ++++++ sound/soc/sof/sof-audio.c | 7 ++++++ sound/soc/sof/sof-pci-dev.c | 8 +++++++ 8 files changed, 95 insertions(+)