mtd: physmap.c: use mtd_device_parse_register
authorDmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Thu, 2 Jun 2011 13:59:58 +0000 (17:59 +0400)
committerArtem Bityutskiy <artem.bityutskiy@intel.com>
Sun, 11 Sep 2011 12:02:07 +0000 (15:02 +0300)
Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Artem: tweaked the patch

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
drivers/mtd/maps/physmap.c

index 2174d10..66e8200 100644 (file)
@@ -27,8 +27,6 @@ struct physmap_flash_info {
        struct mtd_info         *mtd[MAX_RESOURCES];
        struct mtd_info         *cmtd;
        struct map_info         map[MAX_RESOURCES];
-       int                     nr_parts;
-       struct mtd_partition    *parts;
 };
 
 static int physmap_flash_remove(struct platform_device *dev)
@@ -46,8 +44,6 @@ static int physmap_flash_remove(struct platform_device *dev)
 
        if (info->cmtd) {
                mtd_device_unregister(info->cmtd);
-               if (info->nr_parts)
-                       kfree(info->parts);
                if (info->cmtd != info->mtd[0])
                        mtd_concat_destroy(info->cmtd);
        }
@@ -175,23 +171,8 @@ static int physmap_flash_probe(struct platform_device *dev)
        if (err)
                goto err_out;
 
-       err = parse_mtd_partitions(info->cmtd, part_probe_types,
-                                  &info->parts, 0);
-       if (err > 0) {
-               mtd_device_register(info->cmtd, info->parts, err);
-               info->nr_parts = err;
-               return 0;
-       }
-
-       if (physmap_data->nr_parts) {
-               printk(KERN_NOTICE "Using physmap partition information\n");
-               mtd_device_register(info->cmtd, physmap_data->parts,
-                                   physmap_data->nr_parts);
-               return 0;
-       }
-
-       mtd_device_register(info->cmtd, NULL, 0);
-
+       mtd_device_parse_register(info->cmtd, part_probe_types, 0,
+                                 physmap_data->parts, physmap_data->nr_parts);
        return 0;
 
 err_out: