Skip to content

Commit

Permalink
mtd: nand: omap2: obtain memory from resource
Browse files Browse the repository at this point in the history
gpmc initialization done by platform code now updates struct resource
with the address space alloted for nand. Use this interface to obtain
memory rather than relying on platform data field - phys_base.

Signed-off-by: Afzal Mohammed <afzal@ti.com>
Acked-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
  • Loading branch information
Afzal Mohammed authored and Tony Lindgren committed Aug 30, 2012
1 parent 681988b commit 9c4c2f8
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 5 deletions.
1 change: 0 additions & 1 deletion arch/arm/plat-omap/include/plat/nand.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ struct omap_nand_platform_data {
bool dev_ready;
int gpmc_irq;
enum nand_io xfer_type;
unsigned long phys_base;
int devsize;
enum omap_ecc ecc_opt;
struct gpmc_nand_regs reg;
Expand Down
19 changes: 15 additions & 4 deletions drivers/mtd/nand/omap2.c
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ struct omap_nand_info {

int gpmc_cs;
unsigned long phys_base;
unsigned long mem_size;
struct completion comp;
struct dma_chan *dma;
int gpmc_irq;
Expand Down Expand Up @@ -1270,6 +1271,7 @@ static int __devinit omap_nand_probe(struct platform_device *pdev)
int i, offset;
dma_cap_mask_t mask;
unsigned sig;
struct resource *res;

pdata = pdev->dev.platform_data;
if (pdata == NULL) {
Expand All @@ -1289,7 +1291,6 @@ static int __devinit omap_nand_probe(struct platform_device *pdev)
info->pdev = pdev;

info->gpmc_cs = pdata->cs;
info->phys_base = pdata->phys_base;
info->reg = pdata->reg;

info->mtd.priv = &info->nand;
Expand All @@ -1302,13 +1303,23 @@ static int __devinit omap_nand_probe(struct platform_device *pdev)
/* NAND write protect off */
gpmc_cs_configure(info->gpmc_cs, GPMC_CONFIG_WP, 0);

if (!request_mem_region(info->phys_base, NAND_IO_SIZE,
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (res == NULL) {
err = -EINVAL;
dev_err(&pdev->dev, "error getting memory resource\n");
goto out_free_info;
}

info->phys_base = res->start;
info->mem_size = resource_size(res);

if (!request_mem_region(info->phys_base, info->mem_size,
pdev->dev.driver->name)) {
err = -EBUSY;
goto out_free_info;
}

info->nand.IO_ADDR_R = ioremap(info->phys_base, NAND_IO_SIZE);
info->nand.IO_ADDR_R = ioremap(info->phys_base, info->mem_size);
if (!info->nand.IO_ADDR_R) {
err = -ENOMEM;
goto out_release_mem_region;
Expand Down Expand Up @@ -1479,7 +1490,7 @@ static int __devinit omap_nand_probe(struct platform_device *pdev)
out_release_mem_region:
if (info->dma)
dma_release_channel(info->dma);
release_mem_region(info->phys_base, NAND_IO_SIZE);
release_mem_region(info->phys_base, info->mem_size);
out_free_info:
kfree(info);

Expand Down

0 comments on commit 9c4c2f8

Please sign in to comment.