/* DMA configuration */
 static int stm32_fmc2_dma_setup(struct stm32_fmc2_nfc *fmc2)
 {
-       int ret;
+       int ret = 0;
 
-       fmc2->dma_tx_ch = dma_request_slave_channel(fmc2->dev, "tx");
-       fmc2->dma_rx_ch = dma_request_slave_channel(fmc2->dev, "rx");
-       fmc2->dma_ecc_ch = dma_request_slave_channel(fmc2->dev, "ecc");
+       fmc2->dma_tx_ch = dma_request_chan(fmc2->dev, "tx");
+       if (IS_ERR(fmc2->dma_tx_ch)) {
+               ret = PTR_ERR(fmc2->dma_tx_ch);
+               if (ret != -ENODEV)
+                       dev_err(fmc2->dev,
+                               "failed to request tx DMA channel: %d\n", ret);
+               fmc2->dma_tx_ch = NULL;
+               goto err_dma;
+       }
 
-       if (!fmc2->dma_tx_ch || !fmc2->dma_rx_ch || !fmc2->dma_ecc_ch) {
-               dev_warn(fmc2->dev, "DMAs not defined in the device tree, polling mode is used\n");
-               return 0;
+       fmc2->dma_rx_ch = dma_request_chan(fmc2->dev, "rx");
+       if (IS_ERR(fmc2->dma_rx_ch)) {
+               ret = PTR_ERR(fmc2->dma_rx_ch);
+               if (ret != -ENODEV)
+                       dev_err(fmc2->dev,
+                               "failed to request rx DMA channel: %d\n", ret);
+               fmc2->dma_rx_ch = NULL;
+               goto err_dma;
+       }
+
+       fmc2->dma_ecc_ch = dma_request_chan(fmc2->dev, "ecc");
+       if (IS_ERR(fmc2->dma_ecc_ch)) {
+               ret = PTR_ERR(fmc2->dma_ecc_ch);
+               if (ret != -ENODEV)
+                       dev_err(fmc2->dev,
+                               "failed to request ecc DMA channel: %d\n", ret);
+               fmc2->dma_ecc_ch = NULL;
+               goto err_dma;
        }
 
        ret = sg_alloc_table(&fmc2->dma_ecc_sg, FMC2_MAX_SG, GFP_KERNEL);
        init_completion(&fmc2->dma_ecc_complete);
 
        return 0;
+
+err_dma:
+       if (ret == -ENODEV) {
+               dev_warn(fmc2->dev,
+                        "DMAs not defined in the DT, polling mode is used\n");
+               ret = 0;
+       }
+
+       return ret;
 }
 
 /* NAND callbacks setup */