mtd: mxc_nand: swap iomem resource order
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>
This commit is contained in:
parent
e4a09cbf2d
commit
71885b650a
2 changed files with 24 additions and 22 deletions
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue