Patch "ASoC: intel: sof_sdw: Stop processing CODECs when enough are found" 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: intel: sof_sdw: Stop processing CODECs when enough are found

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-intel-sof_sdw-stop-processing-codecs-when-enoug.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 3f596aabfd2067e7ec3f4e9f70c17c787db07fe0
Author: Charles Keepax <ckeepax@xxxxxxxxxxxxxxxxxxxxx>
Date:   Thu Oct 19 12:34:02 2023 -0500

    ASoC: intel: sof_sdw: Stop processing CODECs when enough are found
    
    [ Upstream commit 28809aaeabdf2c01ffe597553146527d1fba3589 ]
    
    When adding CODECs to a DAI link, the code should stop processing more
    CODECs when the expected number of CODECs are discovered. This fixes a
    small corner case issue introduced when support for different devices
    on the same SoundWire link was added. In the case of aggregated
    devices everything is fine, as all devices intended for the DAI link
    will be marked with the same group and any not intended for that DAI
    are skipped by the group check. However for non-aggregated devices the
    group check is bypassed and the current code does not stop after it
    has found the first device. Meaning if additional non-aggregated devices
    are present on the same SoundWire link they will be erroneously added
    into the DAI link.
    
    Fix this issue, and provide a small optimisation by ceasing to process
    devices once we have reached the required number of devices for the
    current DAI link.
    
    Fixes: 317dcdecaf7a ("ASoC: intel: sof_sdw: Allow different devices on the same link")
    Signed-off-by: Charles Keepax <ckeepax@xxxxxxxxxxxxxxxxxxxxx>
    Reviewed-by: Bard Liao <yung-chuan.liao@xxxxxxxxxxxxxxx>
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20231019173411.166759-2-pierre-louis.bossart@xxxxxxxxxxxxxxx
    Signed-off-by: Mark Brown <broonie@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/sound/soc/intel/boards/sof_sdw.c b/sound/soc/intel/boards/sof_sdw.c
index 842649501e303..47d22cab5af62 100644
--- a/sound/soc/intel/boards/sof_sdw.c
+++ b/sound/soc/intel/boards/sof_sdw.c
@@ -1374,7 +1374,7 @@ static int create_sdw_dailink(struct snd_soc_card *card, int *link_index,
 			continue;
 
 		/* j reset after loop, adr_index only applies to first link */
-		for (; j < adr_link_next->num_adr; j++) {
+		for (; j < adr_link_next->num_adr && codec_dlc_index < codec_num; j++) {
 			const struct snd_soc_acpi_endpoint *endpoints;
 
 			endpoints = adr_link_next->adr_d[j].endpoints;



[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