mtd: ixp4xx: Use devm_*() functions
authorJingoo Han <jg1.han@samsung.com>
Fri, 3 Jan 2014 02:15:04 +0000 (11:15 +0900)
committerBrian Norris <computersforpeace@gmail.com>
Tue, 7 Jan 2014 18:07:32 +0000 (10:07 -0800)
Use devm_*() functions to make cleanup paths simpler.

Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
drivers/mtd/maps/ixp4xx.c

index 10debfea81e7147c25fa00e4913bd2d336c24b6a..d6b2451eab1d9f0db5808c3ad837ac2f6f604499 100644 (file)
@@ -13,6 +13,7 @@
  *
  */
 
+#include <linux/err.h>
 #include <linux/module.h>
 #include <linux/types.h>
 #include <linux/init.h>
@@ -162,13 +163,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 +188,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 +215,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;
        }