Patch "ASoC: apple: mca: Improve handling of unavailable DMA channels" has been added to the 6.1-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: apple: mca: Improve handling of unavailable DMA channels

to the 6.1-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-apple-mca-improve-handling-of-unavailable-dma-c.patch
and it can be found in the queue-6.1 subdirectory.

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



commit aa19f15c39b1d4da4e30ee0d38dcc4ab1312c8a6
Author: Martin Povišer <povik+lin@xxxxxxxxxxx>
Date:   Fri Feb 24 16:33:02 2023 +0100

    ASoC: apple: mca: Improve handling of unavailable DMA channels
    
    [ Upstream commit fb1847cc460c127b12720119eae5f438ffc62e85 ]
    
    When we fail to obtain a DMA channel, don't return a blanket -EINVAL,
    instead return the original error code if there's one. This makes
    deferring work as it should. Also don't print an error message for
    -EPROBE_DEFER.
    
    Fixes: 4ec8179c212f ("ASoC: apple: mca: Postpone requesting of DMA channels")
    Signed-off-by: Martin Povišer <povik+lin@xxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20230224153302.45365-3-povik+lin@xxxxxxxxxxx
    Signed-off-by: Mark Brown <broonie@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/sound/soc/apple/mca.c b/sound/soc/apple/mca.c
index aea08c7b2ee85..64750db9b9639 100644
--- a/sound/soc/apple/mca.c
+++ b/sound/soc/apple/mca.c
@@ -950,10 +950,17 @@ static int mca_pcm_new(struct snd_soc_component *component,
 		chan = mca_request_dma_channel(cl, i);
 
 		if (IS_ERR_OR_NULL(chan)) {
+			mca_pcm_free(component, rtd->pcm);
+
+			if (chan && PTR_ERR(chan) == -EPROBE_DEFER)
+				return PTR_ERR(chan);
+
 			dev_err(component->dev, "unable to obtain DMA channel (stream %d cluster %d): %pe\n",
 				i, cl->no, chan);
-			mca_pcm_free(component, rtd->pcm);
-			return -EINVAL;
+
+			if (!chan)
+				return -EINVAL;
+			return PTR_ERR(chan);
 		}
 
 		cl->dma_chans[i] = chan;



[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