@@ -760,3 +760,17 @@ int mtd_is_partition(const struct mtd_info *mtd)
return ispart;
}
EXPORT_SYMBOL_GPL(mtd_is_partition);
+
+/* returns the size of an MTD device */
+uint64_t mtd_get_device_size(const struct mtd_info *mtd)
+{
+ struct mtd_part *part;
+
+ if (!mtd_is_partition(mtd))
+ return mtd->size;
+
+ part = PART(mtd);
+
+ return part->master->size;
+}
+EXPORT_SYMBOL_GPL(mtd_get_device_size);
@@ -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
mtd_get_device_size() returns the size of the whole MTD device, that is the mtd_info master size. This is used by UBI to calculate the maximum number of bad blocks (MBB) on a MTD device. Signed-off-by: Richard Genoud <richard.genoud@gmail.com> --- drivers/mtd/mtdpart.c | 14 ++++++++++++++ include/linux/mtd/partitions.h | 1 + 2 files changed, 15 insertions(+), 0 deletions(-)