of: MTD: Fix OF probing on little-endian systems
Michal Simek [Wed, 29 Sep 2010 05:52:13 +0000 (15:52 +1000)]
Convert big-endian DTB to little-endian if necessary.

Signed-off-by: Michal Simek <monstr@monstr.eu>
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>

drivers/mtd/maps/physmap_of.c
drivers/mtd/ofpart.c

index fe63f6b..ec3edf6 100644 (file)
@@ -294,7 +294,7 @@ static int __devinit of_flash_probe(struct platform_device *dev,
                info->list[i].map.name = dev_name(&dev->dev);
                info->list[i].map.phys = res.start;
                info->list[i].map.size = res_size;
-               info->list[i].map.bankwidth = *width;
+               info->list[i].map.bankwidth = be32_to_cpup(width);
 
                err = -ENOMEM;
                info->list[i].map.virt = ioremap(info->list[i].map.phys,
index 8bf7dc6..7bd171e 100644 (file)
@@ -53,8 +53,8 @@ int __devinit of_mtd_parse_partitions(struct device *dev,
                        continue;
                }
 
-               (*pparts)[i].offset = reg[0];
-               (*pparts)[i].size = reg[1];
+               (*pparts)[i].offset = be32_to_cpu(reg[0]);
+               (*pparts)[i].size = be32_to_cpu(reg[1]);
 
                partname = of_get_property(pp, "label", &len);
                if (!partname)