diff options
Diffstat (limited to 'drivers/mtd/nand/atmel_nand.c')
-rw-r--r-- | drivers/mtd/nand/atmel_nand.c | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c index 48d1783a96..299cc15c3d 100644 --- a/drivers/mtd/nand/atmel_nand.c +++ b/drivers/mtd/nand/atmel_nand.c @@ -862,6 +862,7 @@ static int pmecc_build_galois_table(unsigned int mm, int16_t *index_of, static int __init atmel_pmecc_nand_init_params(struct device_d *dev, struct atmel_nand_host *host) { + struct resource *iores; struct mtd_info *mtd = &host->mtd; struct nand_chip *nand_chip = &host->nand_chip; int cap, sector_size, err_no; @@ -872,20 +873,27 @@ static int __init atmel_pmecc_nand_init_params(struct device_d *dev, dev_info(host->dev, "Initialize PMECC params, cap: %d, sector: %d\n", cap, sector_size); - host->ecc = dev_request_mem_region(dev, 1); + iores = dev_request_mem_resource(dev, 1); + if (IS_ERR(iores)) + return PTR_ERR(iores); + host->ecc = IOMEM(iores->start); if (IS_ERR(host->ecc)) { dev_err(host->dev, "ioremap failed\n"); return -EIO; } - host->pmerrloc_base = dev_request_mem_region(dev, 2); - if (IS_ERR(host->pmerrloc_base)) { + iores = dev_request_mem_resource(dev, 2); + if (IS_ERR(iores)) { dev_err(host->dev, "Can not get I/O resource for PMECC ERRLOC controller!\n"); - return PTR_ERR(host->pmerrloc_base); + return PTR_ERR(iores); } + host->pmerrloc_base = IOMEM(iores->start); - host->pmecc_rom_base = dev_request_mem_region(dev, 3); + iores = dev_request_mem_resource(dev, 3); + if (IS_ERR(iores)) + return PTR_ERR(iores); + host->pmecc_rom_base = IOMEM(iores->start); if (IS_ERR(host->pmecc_rom_base)) { /* Set pmecc_rom_base as the begin of gf table */ int size = sector_size == 512 ? 0x2000 : 0x4000; @@ -1245,10 +1253,14 @@ static int atmel_nand_of_init(struct atmel_nand_host *host, struct device_node * static int atmel_hw_nand_init_params(struct device_d *dev, struct atmel_nand_host *host) { + struct resource *iores; struct mtd_info *mtd = &host->mtd; struct nand_chip *nand_chip = &host->nand_chip; - host->ecc = dev_request_mem_region(dev, 1); + iores = dev_request_mem_resource(dev, 1); + if (IS_ERR(iores)) + return PTR_ERR(iores); + host->ecc = IOMEM(iores->start); if (IS_ERR(host->ecc)) { dev_err(host->dev, "ioremap failed\n"); return -EIO; @@ -1297,6 +1309,7 @@ static int atmel_hw_nand_init_params(struct device_d *dev, */ static int __init atmel_nand_probe(struct device_d *dev) { + struct resource *iores; struct atmel_nand_data *pdata = NULL; struct atmel_nand_host *host; struct mtd_info *mtd; @@ -1312,9 +1325,10 @@ static int __init atmel_nand_probe(struct device_d *dev) if (!pdata) return -ENOMEM; - host->io_base = dev_request_mem_region(dev, 0); - if (IS_ERR(host->io_base)) - return PTR_ERR(host->io_base); + iores = dev_request_mem_resource(dev, 0); + if (IS_ERR(iores)) + return PTR_ERR(iores); + host->io_base = IOMEM(iores->start); mtd = &host->mtd; nand_chip = &host->nand_chip; |