summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Lavnikevich <d.lavnikevich@sam-solutions.com>2014-03-10 14:39:50 +0300
committerSascha Hauer <s.hauer@pengutronix.de>2014-03-12 21:26:37 +0100
commit76a88c0227a74c48828b8d307f0afab2b2537aec (patch)
treec8da157f51b80e838097c1d18e1ada3fe27b3333
parent1ee640765a71a7b9ee2cf4ebad22ed5961aef8db (diff)
downloadbarebox-76a88c0227a74c48828b8d307f0afab2b2537aec.tar.gz
barebox-76a88c0227a74c48828b8d307f0afab2b2537aec.tar.xz
mtd: Support for 4GB partitions
This patch implements correct way of creating partitions on mtd devices with size >= 4GB. Signed-off-by: Dmitry Lavnikevich <d.lavnikevich@sam-solutions.com> Signed-off-by: Grigory Milev <g.milev@sam-solutions.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--commands/partition.c4
-rw-r--r--drivers/mtd/partition.c4
-rw-r--r--include/linux/mtd/mtd.h4
3 files changed, 6 insertions, 6 deletions
diff --git a/commands/partition.c b/commands/partition.c
index f8257222a9..44b91d1a13 100644
--- a/commands/partition.c
+++ b/commands/partition.c
@@ -59,11 +59,11 @@ static int mtd_part_do_parse_one(char *devname, const char *partstr,
size = SIZE_REMAINING;
end = (char *)partstr + 1;
} else {
- size = strtoul_suffix(partstr, &end, 0);
+ size = strtoull_suffix(partstr, &end, 0);
}
if (*end == '@')
- *offset = strtoul_suffix(end+1, &end, 0);
+ *offset = strtoull_suffix(end+1, &end, 0);
if (size == SIZE_REMAINING)
size = devsize - *offset;
diff --git a/drivers/mtd/partition.c b/drivers/mtd/partition.c
index 351c5831b0..720c2adab3 100644
--- a/drivers/mtd/partition.c
+++ b/drivers/mtd/partition.c
@@ -75,8 +75,8 @@ static int mtd_part_block_markbad(struct mtd_info *mtd, loff_t ofs)
return res;
}
-struct mtd_info *mtd_add_partition(struct mtd_info *mtd, off_t offset, size_t size,
- unsigned long flags, const char *name)
+struct mtd_info *mtd_add_partition(struct mtd_info *mtd, off_t offset,
+ uint64_t size, unsigned long flags, const char *name)
{
struct mtd_info *part;
int start = 0, end = 0, i;
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h
index 970cdb02fa..c63b514f44 100644
--- a/include/linux/mtd/mtd.h
+++ b/include/linux/mtd/mtd.h
@@ -280,8 +280,8 @@ struct mtd_notifier {
struct list_head list;
};
-struct mtd_info *mtd_add_partition(struct mtd_info *mtd, off_t offset, size_t size,
- unsigned long flags, const char *name);
+struct mtd_info *mtd_add_partition(struct mtd_info *mtd, off_t offset,
+ uint64_t size, unsigned long flags, const char *name);
int mtd_del_partition(struct mtd_info *mtd);
extern void register_mtd_user (struct mtd_notifier *new);