mtd: mtdparts: introduce mtd_get_device_size
authorRichard Genoud <richard.genoud@gmail.com>
Tue, 10 Jul 2012 16:23:40 +0000 (18:23 +0200)
committerArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
Tue, 4 Sep 2012 06:38:58 +0000 (09:38 +0300)
'mtd_get_device_size()' returns the size of the whole MTD device, that is the
mtd_info master size. This will be used by UBI to calculate the maximum number
of bad blocks (MBB) on a MTD device.

Artem: amended the patch a bit.

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
drivers/mtd/mtdpart.c
include/linux/mtd/partitions.h

index 8500584..3a49e6d 100644 (file)
@@ -760,3 +760,13 @@ int mtd_is_partition(const struct mtd_info *mtd)
        return ispart;
 }
 EXPORT_SYMBOL_GPL(mtd_is_partition);
+
+/* Returns the size of the entire flash chip */
+uint64_t mtd_get_device_size(const struct mtd_info *mtd)
+{
+       if (!mtd_is_partition(mtd))
+               return mtd->size;
+
+       return PART(mtd)->master->size;
+}
+EXPORT_SYMBOL_GPL(mtd_get_device_size);
index 02a5115..1f8d24b 100644 (file)
@@ -83,5 +83,6 @@ int mtd_is_partition(const struct mtd_info *mtd);
 int mtd_add_partition(struct mtd_info *master, char *name,
                      long long offset, long long length);
 int mtd_del_partition(struct mtd_info *master, int partno);
+uint64_t mtd_get_device_size(const struct mtd_info *mtd);
 
 #endif