projects
/
platform
/
kernel
/
linux-starfive.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
0c398c1
)
ASoC: apple: mca: Improve handling of unavailable DMA channels
author
Martin Povišer
<povik+lin@cutebit.org>
Fri, 24 Feb 2023 15:33:02 +0000
(16:33 +0100)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Sat, 11 Mar 2023 12:55:31 +0000
(13:55 +0100)
[ 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@cutebit.org>
Link:
https://lore.kernel.org/r/20230224153302.45365-3-povik+lin@cutebit.org
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
sound/soc/apple/mca.c
patch
|
blob
|
history
diff --git
a/sound/soc/apple/mca.c
b/sound/soc/apple/mca.c
index
aea08c7
..
64750db
100644
(file)
--- 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;