]> git.karo-electronics.de Git - linux-beck.git/commitdiff
mtd: nand: pxa3xx: Allow devices with no dma resources
authorEzequiel Garcia <ezequiel.garcia@free-electrons.com>
Mon, 12 Aug 2013 17:14:58 +0000 (14:14 -0300)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Fri, 30 Aug 2013 20:35:02 +0000 (21:35 +0100)
When use_dma=0 there's no point in requesting resources for dma,
since they won't be used anyway. Therefore we remove that requirement,
therefore allowing devices without dma to pass the driver probe.

Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
Tested-by: Daniel Mack <zonque@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
drivers/mtd/nand/pxa3xx_nand.c

index d14933c3a75de81297a3b0930a5b9fedf68b185d..5db900d917f92434f5941a393bcb9045ee99bd6c 100644 (file)
@@ -1141,30 +1141,35 @@ static int alloc_nand_resource(struct platform_device *pdev)
        if (ret < 0)
                return ret;
 
-       /*
-        * This is a dirty hack to make this driver work from devicetree
-        * bindings. It can be removed once we have a prober DMA controller
-        * framework for DT.
-        */
-       if (pdev->dev.of_node && of_machine_is_compatible("marvell,pxa3xx")) {
-               info->drcmr_dat = 97;
-               info->drcmr_cmd = 99;
-       } else {
-               r = platform_get_resource(pdev, IORESOURCE_DMA, 0);
-               if (r == NULL) {
-                       dev_err(&pdev->dev, "no resource defined for data DMA\n");
-                       ret = -ENXIO;
-                       goto fail_disable_clk;
-               }
-               info->drcmr_dat = r->start;
-
-               r = platform_get_resource(pdev, IORESOURCE_DMA, 1);
-               if (r == NULL) {
-                       dev_err(&pdev->dev, "no resource defined for command DMA\n");
-                       ret = -ENXIO;
-                       goto fail_disable_clk;
+       if (use_dma) {
+               /*
+                * This is a dirty hack to make this driver work from
+                * devicetree bindings. It can be removed once we have
+                * a prober DMA controller framework for DT.
+                */
+               if (pdev->dev.of_node &&
+                   of_machine_is_compatible("marvell,pxa3xx")) {
+                       info->drcmr_dat = 97;
+                       info->drcmr_cmd = 99;
+               } else {
+                       r = platform_get_resource(pdev, IORESOURCE_DMA, 0);
+                       if (r == NULL) {
+                               dev_err(&pdev->dev,
+                                       "no resource defined for data DMA\n");
+                               ret = -ENXIO;
+                               goto fail_disable_clk;
+                       }
+                       info->drcmr_dat = r->start;
+
+                       r = platform_get_resource(pdev, IORESOURCE_DMA, 1);
+                       if (r == NULL) {
+                               dev_err(&pdev->dev,
+                                       "no resource defined for cmd DMA\n");
+                               ret = -ENXIO;
+                               goto fail_disable_clk;
+                       }
+                       info->drcmr_cmd = r->start;
                }
-               info->drcmr_cmd = r->start;
        }
 
        irq = platform_get_irq(pdev, 0);