Unverified Commit fb1847cc authored by Martin Povišer's avatar Martin Povišer Committed by Mark Brown
Browse files

ASoC: apple: mca: Improve handling of unavailable DMA channels



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: 4ec8179c ("ASoC: apple: mca: Postpone requesting of DMA channels")
Signed-off-by: default avatarMartin Povišer <povik+lin@cutebit.org>
Link: https://lore.kernel.org/r/20230224153302.45365-3-povik+lin@cutebit.org


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent d8b3e396
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -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);

			if (!chan)
				return -EINVAL;
			return PTR_ERR(chan);
		}

		cl->dma_chans[i] = chan;