]> rtime.felk.cvut.cz Git - can-eth-gw-linux.git/commitdiff
mtd: mxc_nand: swap iomem resource order
authorSascha Hauer <s.hauer@pengutronix.de>
Wed, 6 Jun 2012 10:33:14 +0000 (12:33 +0200)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Fri, 6 Jul 2012 17:17:06 +0000 (18:17 +0100)
The i.MX v3 nand controller (i.MX5) needs two memory resources.
Traditionally we have the AXI resource first. For sorting in this
driver into the devicetree it feels much more natural to have the
IP resource first. This patch swaps the ordering of these two
resources.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
arch/arm/plat-mxc/devices/platform-mxc_nand.c
drivers/mtd/nand/mxc_nand.c

index 1568f39fba8bec5ee2b67e459bf861c62d406d29..95b75cc70515efa8ffc0465cc44585b99ff70ede 100644 (file)
@@ -63,10 +63,6 @@ struct platform_device *__init imx_add_mxc_nand(
        /* AXI has to come first, that's how the mxc_nand driver expect it */
        struct resource res[] = {
                {
-                       .start = data->axibase,
-                       .end = data->axibase + SZ_16K - 1,
-                       .flags = IORESOURCE_MEM,
-               }, {
                        .start = data->iobase,
                        .end = data->iobase + data->iosize - 1,
                        .flags = IORESOURCE_MEM,
@@ -74,10 +70,13 @@ struct platform_device *__init imx_add_mxc_nand(
                        .start = data->irq,
                        .end = data->irq,
                        .flags = IORESOURCE_IRQ,
+               }, {
+                       .start = data->axibase,
+                       .end = data->axibase + SZ_16K - 1,
+                       .flags = IORESOURCE_MEM,
                },
        };
        return imx_add_platform_device("mxc_nand", data->id,
-                       res + !data->axibase,
-                       ARRAY_SIZE(res) - !data->axibase,
+                       res, ARRAY_SIZE(res) - !data->axibase,
                        pdata, sizeof(*pdata));
 }
index db428c24e2c84e8967c664a219f1bdfdedea5755..48c57275001fe328aa0fe27706213cc267b50f32 100644 (file)
@@ -1376,7 +1376,25 @@ static int __init mxcnd_probe(struct platform_device *pdev)
        if (IS_ERR(host->clk))
                return PTR_ERR(host->clk);
 
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       err = mxcnd_probe_dt(host);
+       if (err > 0)
+               err = mxcnd_probe_pdata(host);
+       if (err < 0)
+               return err;
+
+       if (host->devtype_data->needs_ip) {
+               res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+               if (!res)
+                       return -ENODEV;
+               host->regs_ip = devm_request_and_ioremap(&pdev->dev, res);
+               if (!host->regs_ip)
+                       return -ENOMEM;
+
+               res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
+       } else {
+               res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       }
+
        if (!res)
                return -ENODEV;
 
@@ -1386,12 +1404,6 @@ static int __init mxcnd_probe(struct platform_device *pdev)
 
        host->main_area0 = host->base;
 
-       err = mxcnd_probe_dt(host);
-       if (err > 0)
-               err = mxcnd_probe_pdata(host);
-       if (err < 0)
-               return err;
-
        if (host->devtype_data->regs_offset)
                host->regs = host->base + host->devtype_data->regs_offset;
        host->spare0 = host->base + host->devtype_data->spare0_offset;
@@ -1405,15 +1417,6 @@ static int __init mxcnd_probe(struct platform_device *pdev)
        this->ecc.size = 512;
        this->ecc.layout = host->devtype_data->ecclayout_512;
 
-       if (host->devtype_data->needs_ip) {
-               res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-               if (!res)
-                       return -ENODEV;
-               host->regs_ip = devm_request_and_ioremap(&pdev->dev, res);
-               if (!host->regs_ip)
-                       return -ENOMEM;
-       }
-
        if (host->pdata.hw_ecc) {
                this->ecc.calculate = mxc_nand_calculate_ecc;
                this->ecc.hwctl = mxc_nand_enable_hwecc;