DMAs are optional. Even if the DMA request is unsuccessfully, the ADC can still work properly. Make tiadc_request_dma() not fail if we do not provide dmas & dma-names properties. This actually fixes the wrong error handling of the tiadc_request_dma() result where the probing only failed if -EPROPE_DEFER was returned. Fixes: f438b9da75eb ("drivers: iio: ti_am335x_adc: add dma support") Signed-off-by: Wadim Egorov <w.egorov@xxxxxxxxx> --- drivers/iio/adc/ti_am335x_adc.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/iio/adc/ti_am335x_adc.c b/drivers/iio/adc/ti_am335x_adc.c index 8db7a01cb5fb..e14aa9254ab1 100644 --- a/drivers/iio/adc/ti_am335x_adc.c +++ b/drivers/iio/adc/ti_am335x_adc.c @@ -543,8 +543,11 @@ static int tiadc_request_dma(struct platform_device *pdev, if (IS_ERR(dma->chan)) { int ret = PTR_ERR(dma->chan); + if (ret != -ENODEV) + return dev_err_probe(&pdev->dev, ret, + "RX DMA channel request failed\n"); dma->chan = NULL; - return ret; + return 0; } /* RX buffer */ @@ -670,7 +673,7 @@ static int tiadc_probe(struct platform_device *pdev) platform_set_drvdata(pdev, indio_dev); err = tiadc_request_dma(pdev, adc_dev); - if (err && err == -EPROBE_DEFER) + if (err) goto err_dma; return 0; -- 2.25.1