Patch "ASoC: cs35l56: Use PCI SSID as the firmware UID" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ASoC: cs35l56: Use PCI SSID as the firmware UID

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     asoc-cs35l56-use-pci-ssid-as-the-firmware-uid.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 29a25ea3e50f47df15c97d15408335fe824c82cf
Author: Richard Fitzgerald <rf@xxxxxxxxxxxxxxxxxxxxx>
Date:   Tue Sep 12 17:32:07 2023 +0100

    ASoC: cs35l56: Use PCI SSID as the firmware UID
    
    [ Upstream commit 1a1c3d794ef65ef2978c5e65e1aed3fe6f014e90 ]
    
    If the driver properties do not define a cirrus,firmware-uid try to get the
    PCI SSID as the UID.
    
    On PCI-based systems the PCI SSID is used to uniquely identify the specific
    sound hardware. This is the standard mechanism for x86 systems and is the
    way to get a unique system identifier for systems that use the CS35L56 on
    SoundWire.
    
    For non-SoundWire systems there is no Windows equivalent of the ASoC driver
    in I2C/SPI mode. These would be:
    
    1. HDA systems, which are handled by the HDA subsystem.
    2. Linux-specific systems.
    3. Composite devices where the cs35l56 is not present in ACPI and is
       configured using software nodes.
    
    Case 2 can use the firmware-uid property, though the PCI SSID is supported
    as an alternative, as it is the standard PCI mechanism.
    
    Case 3 is a SoundWire system where some other codec is the SoundWire bridge
    device and CS35L56 is not listed in ACPI. As these are SoundWire systems
    they will normally use the PCI SSID.
    
    Signed-off-by: Richard Fitzgerald <rf@xxxxxxxxxxxxxxxxxxxxx>
    Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20230912163207.3498161-5-rf@xxxxxxxxxxxxxxxxxxxxx
    Signed-off-by: Mark Brown <broonie@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/sound/soc/codecs/cs35l56.c b/sound/soc/codecs/cs35l56.c
index f9059780b7a7b..32d4ab2cd6724 100644
--- a/sound/soc/codecs/cs35l56.c
+++ b/sound/soc/codecs/cs35l56.c
@@ -772,9 +772,20 @@ static int cs35l56_component_probe(struct snd_soc_component *component)
 {
 	struct cs35l56_private *cs35l56 = snd_soc_component_get_drvdata(component);
 	struct dentry *debugfs_root = component->debugfs_root;
+	unsigned short vendor, device;
 
 	BUILD_BUG_ON(ARRAY_SIZE(cs35l56_tx_input_texts) != ARRAY_SIZE(cs35l56_tx_input_values));
 
+	if (!cs35l56->dsp.system_name &&
+	    (snd_soc_card_get_pci_ssid(component->card, &vendor, &device) == 0)) {
+		cs35l56->dsp.system_name = devm_kasprintf(cs35l56->base.dev,
+							  GFP_KERNEL,
+							  "%04x%04x",
+							  vendor, device);
+		if (!cs35l56->dsp.system_name)
+			return -ENOMEM;
+	}
+
 	if (!wait_for_completion_timeout(&cs35l56->init_completion,
 					 msecs_to_jiffies(5000))) {
 		dev_err(cs35l56->base.dev, "%s: init_completion timed out\n", __func__);



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux