Convert CONFIG_PHY_RESET_DELAY to Kconfig
[platform/kernel/u-boot.git] / common / fdt_support.c
index efbd900..ea18ea3 100644 (file)
@@ -371,12 +371,9 @@ void do_fixup_by_compat(void *fdt, const char *compat,
                debug(" %.2x", *(u8*)(val+i));
        debug("\n");
 #endif
-       off = fdt_node_offset_by_compatible(fdt, -1, compat);
-       while (off != -FDT_ERR_NOTFOUND) {
+       fdt_for_each_node_by_compatible(off, fdt, -1, compat)
                if (create || (fdt_get_property(fdt, off, prop, NULL) != NULL))
                        fdt_setprop(fdt, off, prop, val, len);
-               off = fdt_node_offset_by_compatible(fdt, off, compat);
-       }
 }
 
 void do_fixup_by_compat_u32(void *fdt, const char *compat,
@@ -991,15 +988,14 @@ void fdt_fixup_mtdparts(void *blob, const struct node_info *node_info,
 {
        struct mtd_device *dev;
        int i, idx;
-       int noff;
+       int noff, parts;
        bool inited = false;
 
        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) {
+               fdt_for_each_node_by_compatible(noff, blob, -1,
+                                               node_info[i].compat) {
                        const char *prop;
 
                        prop = fdt_getprop(blob, noff, "status", NULL);
@@ -1018,7 +1014,12 @@ void fdt_fixup_mtdparts(void *blob, const struct node_info *node_info,
 
                        dev = device_find(node_info[i].type, idx++);
                        if (dev) {
-                               if (fdt_node_set_part_info(blob, noff, dev))
+                               parts = fdt_subnode_offset(blob, noff,
+                                                          "partitions");
+                               if (parts < 0)
+                                       parts = noff;
+
+                               if (fdt_node_set_part_info(blob, parts, dev))
                                        return; /* return on error */
                        }
                }
@@ -1473,14 +1474,12 @@ out:
 int fdt_node_offset_by_compat_reg(void *blob, const char *compat,
                                        phys_addr_t compat_off)
 {
-       int len, off = fdt_node_offset_by_compatible(blob, -1, compat);
-       while (off != -FDT_ERR_NOTFOUND) {
+       int len, off;
+
+       fdt_for_each_node_by_compatible(off, blob, -1, compat) {
                const fdt32_t *reg = fdt_getprop(blob, off, "reg", &len);
-               if (reg) {
-                       if (compat_off == fdt_translate_address(blob, off, reg))
-                               return off;
-               }
-               off = fdt_node_offset_by_compatible(blob, off, compat);
+               if (reg && compat_off == fdt_translate_address(blob, off, reg))
+                       return off;
        }
 
        return -FDT_ERR_NOTFOUND;