Hi Peter, If not too late, could you change trace to only trig error trace when error is not "probe defered" ? See below: - chan = dma_request_slave_channel(&pdev->dev, "tx"); - if (!chan) { - dev_info(&pdev->dev, "Unable to request DMA channel, defer probing\n"); - return -EPROBE_DEFER; + chan = dma_request_chan(&pdev->dev, "tx"); + if (IS_ERR(chan)) { + if (PTR_ERR(chan) != -EPROBE_DEFER) + dev_err(&pdev->dev, "Unable to request DMA channel\n"); + return PTR_ERR(chan); Best regards, Hugues. On 12/18/19 11:52 AM, Hugues FRUCHET wrote: > Thanks for patching Peter, > > No regression observed on my side. > > Acked-by: Hugues Fruchet <hugues.fruchet@xxxxxx> > > Best regards, > Hugues. > > On 12/17/19 11:41 AM, Peter Ujfalusi wrote: >> dma_request_slave_channel() is a wrapper on top of dma_request_chan() >> eating up the error code. >> >> By using dma_request_chan() directly the driver can support deferred >> probing against DMA. >> >> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@xxxxxx> >> --- >> drivers/media/platform/stm32/stm32-dcmi.c | 6 +++--- >> 1 file changed, 3 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/media/platform/stm32/stm32-dcmi.c >> b/drivers/media/platform/stm32/stm32-dcmi.c >> index 9392e3409fba..55351872b0c7 100644 >> --- a/drivers/media/platform/stm32/stm32-dcmi.c >> +++ b/drivers/media/platform/stm32/stm32-dcmi.c >> @@ -1910,10 +1910,10 @@ static int dcmi_probe(struct platform_device >> *pdev) >> return PTR_ERR(mclk); >> } >> - chan = dma_request_slave_channel(&pdev->dev, "tx"); >> - if (!chan) { >> + chan = dma_request_chan(&pdev->dev, "tx"); >> + if (IS_ERR(chan)) { >> dev_info(&pdev->dev, "Unable to request DMA channel, defer >> probing\n"); >> - return -EPROBE_DEFER; >> + return PTR_ERR(chan); >> } >> spin_lock_init(&dcmi->irqlock); >>