Commit d45fd121 authored by Dmitry Eremin-Solenikov's avatar Dmitry Eremin-Solenikov Committed by Artem Bityutskiy
Browse files

mtd: physmap.c: use mtd_device_parse_register



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: default avatarDmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
parent 6e6e44c8
Loading
Loading
Loading
Loading
+2 −21
Original line number Diff line number Diff line
@@ -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: