• Richard Fitzgerald's avatar
    ASoC: soc-card: Add storage for PCI SSID · 47f56e38
    Richard Fitzgerald authored
    Add members to struct snd_soc_card to store the PCI subsystem ID (SSID)
    of the soundcard.
    
    The PCI specification provides two registers to store a vendor-specific
    SSID that can be read by drivers to uniquely identify a particular
    "soundcard". This is defined in the PCI specification to distinguish
    products that use the same silicon (and therefore have the same silicon
    ID) so that product-specific differences can be applied.
    
    PCI only defines 0xFFFF as an invalid value. 0x0000 is not defined as
    invalid. So the usual pattern of zero-filling the struct and then
    assuming a zero value unset will not work. A flag is included to
    indicate when the SSID information has been filled in.
    
    Unlike DMI information, which has a free-format entirely up to the vendor,
    the PCI SSID has a strictly defined format and a registry of vendor IDs.
    
    It is usual in Windows drivers that the SSID is used as the sole identifier
    of the specific end-product and the Windows driver contains tables mapping
    that to information about the hardware setup, rather than using ACPI
    properties.
    
    This SSID is important information for ASoC components that need to apply
    hardware-specific configuration on PCI-based systems.
    
    As the SSID is a generic part of the PCI specification and is treated as
    identifying the "soundcard", it is reasonable to include this information
    in struct snd_soc_card, instead of components inventing their own custom
    ways to pass this information around.
    Signed-off-by: default avatarRichard Fitzgerald <rf@opensource.cirrus.com>
    Reviewed-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20230912163207.3498161-2-rf@opensource.cirrus.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    47f56e38
soc-card.h 3.44 KB