mtd: nand: sh_flctl: handle dma_submit() errors
authorBrian Norris <computersforpeace@gmail.com>
Thu, 5 May 2016 19:42:44 +0000 (12:42 -0700)
committerBoris Brezillon <boris.brezillon@free-electrons.com>
Fri, 23 Sep 2016 07:35:16 +0000 (09:35 +0200)
Some build tools noticed that 'cookie' is being set but not used. Might
as well catch the errors here and handle them the same way we handle
other DMA prep steps.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
drivers/mtd/nand/sh_flctl.c

index 6fa3bcd59769946f7b342ed97eebe51e625d5b0a..442ce619b3b6d5cb8a65e2f8740e30e01e750aed 100644 (file)
@@ -397,7 +397,7 @@ static int flctl_dma_fifo0_transfer(struct sh_flctl *flctl, unsigned long *buf,
        struct dma_chan *chan;
        enum dma_transfer_direction tr_dir;
        dma_addr_t dma_addr;
-       dma_cookie_t cookie = -EINVAL;
+       dma_cookie_t cookie;
        uint32_t reg;
        int ret;
 
@@ -423,6 +423,12 @@ static int flctl_dma_fifo0_transfer(struct sh_flctl *flctl, unsigned long *buf,
                desc->callback = flctl_dma_complete;
                desc->callback_param = flctl;
                cookie = dmaengine_submit(desc);
+               if (dma_submit_error(cookie)) {
+                       ret = dma_submit_error(cookie);
+                       dev_warn(&flctl->pdev->dev,
+                                "DMA submit failed, falling back to PIO\n");
+                       goto out;
+               }
 
                dma_async_issue_pending(chan);
        } else {