|
@@ -40,51 +40,6 @@ struct of_flash {
|
|
|
};
|
|
|
|
|
|
#define OF_FLASH_PARTS(info) ((info)->parts)
|
|
|
-static int parse_obsolete_partitions(struct platform_device *dev,
|
|
|
- struct of_flash *info,
|
|
|
- struct device_node *dp)
|
|
|
-{
|
|
|
- int i, plen, nr_parts;
|
|
|
- const struct {
|
|
|
- __be32 offset, len;
|
|
|
- } *part;
|
|
|
- const char *names;
|
|
|
-
|
|
|
- part = of_get_property(dp, "partitions", &plen);
|
|
|
- if (!part)
|
|
|
- return 0; /* No partitions found */
|
|
|
-
|
|
|
- dev_warn(&dev->dev, "Device tree uses obsolete partition map binding\n");
|
|
|
-
|
|
|
- nr_parts = plen / sizeof(part[0]);
|
|
|
-
|
|
|
- info->parts = kzalloc(nr_parts * sizeof(*info->parts), GFP_KERNEL);
|
|
|
- if (!info->parts)
|
|
|
- return -ENOMEM;
|
|
|
-
|
|
|
- names = of_get_property(dp, "partition-names", &plen);
|
|
|
-
|
|
|
- for (i = 0; i < nr_parts; i++) {
|
|
|
- info->parts[i].offset = be32_to_cpu(part->offset);
|
|
|
- info->parts[i].size = be32_to_cpu(part->len) & ~1;
|
|
|
- if (be32_to_cpu(part->len) & 1) /* bit 0 set signifies read only partition */
|
|
|
- info->parts[i].mask_flags = MTD_WRITEABLE;
|
|
|
-
|
|
|
- if (names && (plen > 0)) {
|
|
|
- int len = strlen(names) + 1;
|
|
|
-
|
|
|
- info->parts[i].name = (char *)names;
|
|
|
- plen -= len;
|
|
|
- names += len;
|
|
|
- } else {
|
|
|
- info->parts[i].name = "unnamed";
|
|
|
- }
|
|
|
-
|
|
|
- part++;
|
|
|
- }
|
|
|
-
|
|
|
- return nr_parts;
|
|
|
-}
|
|
|
|
|
|
static int of_flash_remove(struct platform_device *dev)
|
|
|
{
|
|
@@ -166,7 +121,7 @@ static struct mtd_info * __devinit obsolete_probe(struct platform_device *dev,
|
|
|
default is use. These take precedence over other device tree
|
|
|
information. */
|
|
|
static const char *part_probe_types_def[] = { "cmdlinepart", "RedBoot",
|
|
|
- "ofpart", NULL };
|
|
|
+ "ofpart", "ofoldpart", NULL };
|
|
|
static const char ** __devinit of_get_probes(struct device_node *dp)
|
|
|
{
|
|
|
const char *cp;
|
|
@@ -343,12 +298,6 @@ static int __devinit of_flash_probe(struct platform_device *dev)
|
|
|
}
|
|
|
of_free_probes(part_probe_types);
|
|
|
|
|
|
- if (err == 0) {
|
|
|
- err = parse_obsolete_partitions(dev, info, dp);
|
|
|
- if (err < 0)
|
|
|
- goto err_out;
|
|
|
- }
|
|
|
-
|
|
|
mtd_device_register(info->cmtd, info->parts, err);
|
|
|
|
|
|
kfree(mtd_list);
|