Hi Carlos, ... > @@ -1802,6 +1803,18 @@ static int i2c_imx_probe(struct platform_device *pdev) > if (ret == -EPROBE_DEFER) > goto clk_notifier_unregister; > > + /* As we can always fall back to PIO, let's ignore the error setting up DMA. */ > + ret = i2c_imx_dma_request(i2c_imx, phy_addr); > + if (ret) { > + if (ret == -EPROBE_DEFER) > + goto clk_notifier_unregister; > + else if (ret == -ENODEV) > + dev_dbg(&pdev->dev, "Only use PIO mode\n"); > + else > + dev_err(&pdev->dev, "Failed to setup DMA (%pe), only use PIO mode\n", > + ERR_PTR(ret)); My question here is not just about the use of dev_err vs dev_err_probe, but why don't we exit the probe if we get an error. We should use PIO only in case of ENODEV, in all the other cases I think we should just leave. E.g. why don't we exit if we meet ret == -ENOMEM? Andi