diff options
Diffstat (limited to 'drivers/mtd/maps/ixp4xx.c')
| -rw-r--r-- | drivers/mtd/maps/ixp4xx.c | 29 | 
1 files changed, 6 insertions, 23 deletions
diff --git a/drivers/mtd/maps/ixp4xx.c b/drivers/mtd/maps/ixp4xx.c index 10debfea81e..6a589f1e288 100644 --- a/drivers/mtd/maps/ixp4xx.c +++ b/drivers/mtd/maps/ixp4xx.c @@ -13,9 +13,9 @@   *   */ +#include <linux/err.h>  #include <linux/module.h>  #include <linux/types.h> -#include <linux/init.h>  #include <linux/kernel.h>  #include <linux/string.h>  #include <linux/slab.h> @@ -162,13 +162,6 @@ static int ixp4xx_flash_remove(struct platform_device *dev)  		mtd_device_unregister(info->mtd);  		map_destroy(info->mtd);  	} -	if (info->map.virt) -		iounmap(info->map.virt); - -	if (info->res) { -		release_resource(info->res); -		kfree(info->res); -	}  	if (plat->exit)  		plat->exit(); @@ -194,7 +187,8 @@ static int ixp4xx_flash_probe(struct platform_device *dev)  			return err;  	} -	info = kzalloc(sizeof(struct ixp4xx_flash_info), GFP_KERNEL); +	info = devm_kzalloc(&dev->dev, sizeof(struct ixp4xx_flash_info), +			    GFP_KERNEL);  	if(!info) {  		err = -ENOMEM;  		goto Error; @@ -220,20 +214,9 @@ static int ixp4xx_flash_probe(struct platform_device *dev)  	info->map.write = ixp4xx_probe_write16;  	info->map.copy_from = ixp4xx_copy_from; -	info->res = request_mem_region(dev->resource->start, -			resource_size(dev->resource), -			"IXP4XXFlash"); -	if (!info->res) { -		printk(KERN_ERR "IXP4XXFlash: Could not reserve memory region\n"); -		err = -ENOMEM; -		goto Error; -	} - -	info->map.virt = ioremap(dev->resource->start, -				 resource_size(dev->resource)); -	if (!info->map.virt) { -		printk(KERN_ERR "IXP4XXFlash: Failed to ioremap region\n"); -		err = -EIO; +	info->map.virt = devm_ioremap_resource(&dev->dev, dev->resource); +	if (IS_ERR(info->map.virt)) { +		err = PTR_ERR(info->map.virt);  		goto Error;  	}  | 
