diff options
Diffstat (limited to 'common/fdt_support.c')
-rw-r--r-- | common/fdt_support.c | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/common/fdt_support.c b/common/fdt_support.c index a565b470f8..3778de5368 100644 --- a/common/fdt_support.c +++ b/common/fdt_support.c @@ -816,8 +816,8 @@ static int fdt_del_partitions(void *blob, int parent_offset) return 0; } -static int fdt_node_set_part_info(void *blob, int parent_offset, - struct mtd_device *dev) +int fdt_node_set_part_info(void *blob, int parent_offset, + struct mtd_device *dev) { struct list_head *pentry; struct part_info *part; @@ -951,35 +951,27 @@ void fdt_fixup_mtdparts(void *blob, const struct node_info *node_info, struct mtd_device *dev; int i, idx; int noff; - bool inited = false; + + if (mtdparts_init() != 0) + return; for (i = 0; i < node_info_size; i++) { idx = 0; - noff = -1; - - while ((noff = fdt_node_offset_by_compatible(blob, noff, - node_info[i].compat)) >= 0) { - const char *prop; - - prop = fdt_getprop(blob, noff, "status", NULL); - if (prop && !strcmp(prop, "disabled")) - continue; - + noff = fdt_node_offset_by_compatible(blob, -1, + node_info[i].compat); + while (noff != -FDT_ERR_NOTFOUND) { debug("%s: %s, mtd dev type %d\n", fdt_get_name(blob, noff, 0), node_info[i].compat, node_info[i].type); - - if (!inited) { - if (mtdparts_init() != 0) - return; - inited = true; - } - dev = device_find(node_info[i].type, idx++); if (dev) { if (fdt_node_set_part_info(blob, noff, dev)) return; /* return on error */ } + + /* Jump to next flash node */ + noff = fdt_node_offset_by_compatible(blob, noff, + node_info[i].compat); } } } |