/* ... and the DMA channel. */
        snprintf(name, sizeof(name), "port%u", port);
-       dma->dma = dma_request_slave_channel(dma->xdev->dev, name);
-       if (dma->dma == NULL) {
-               dev_err(dma->xdev->dev, "no VDMA channel found\n");
-               ret = -ENODEV;
+       dma->dma = dma_request_chan(dma->xdev->dev, name);
+       if (IS_ERR(dma->dma)) {
+               ret = PTR_ERR(dma->dma);
+               if (ret != -EPROBE_DEFER)
+                       dev_err(dma->xdev->dev, "no VDMA channel found\n");
                goto error;
        }
 
        if (video_is_registered(&dma->video))
                video_unregister_device(&dma->video);
 
-       if (dma->dma)
+       if (!IS_ERR_OR_NULL(dma->dma))
                dma_release_channel(dma->dma);
 
        media_entity_cleanup(&dma->video.entity);