From 05ff8c258c76dd469232a03ec8d45f7e7267e0ac Mon Sep 17 00:00:00 2001 From: Joe Schaack Date: Thu, 21 Feb 2013 16:29:45 -0600 Subject: mtd: ofpart: support partitions of 4 GiB and larger Previously, partitions were limited to less than 4 GiB in size because the address and size were read as 32-bit values. Add support for 64-bit values to support devices of 4 GiB and larger. Signed-off-by: Joe Schaack Signed-off-by: Nate Case Signed-off-by: Aaron Sierra Signed-off-by: Artem Bityutskiy Signed-off-by: David Woodhouse --- drivers/mtd/ofpart.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'drivers/mtd/ofpart.c') diff --git a/drivers/mtd/ofpart.c b/drivers/mtd/ofpart.c index 30bd907a260a..553d6d6d5603 100644 --- a/drivers/mtd/ofpart.c +++ b/drivers/mtd/ofpart.c @@ -55,6 +55,7 @@ static int parse_ofpart_partitions(struct mtd_info *master, while ((pp = of_get_next_child(node, pp))) { const __be32 *reg; int len; + int a_cells, s_cells; reg = of_get_property(pp, "reg", &len); if (!reg) { @@ -62,8 +63,10 @@ static int parse_ofpart_partitions(struct mtd_info *master, continue; } - (*pparts)[i].offset = be32_to_cpu(reg[0]); - (*pparts)[i].size = be32_to_cpu(reg[1]); + a_cells = of_n_addr_cells(pp); + s_cells = of_n_size_cells(pp); + (*pparts)[i].offset = of_read_number(reg, a_cells); + (*pparts)[i].size = of_read_number(reg + a_cells, s_cells); partname = of_get_property(pp, "label", &len); if (!partname) -- cgit v1.2.3