Replace fdt_node_offset() with fdt_find_node_by_path().
[oweals/u-boot.git] / common / fdt_support.c
index 91b729f37a0c77eff313eff8158926f88dfa61d4..efa63f001deb2d8012cf89aa8dd6e011223da845 100644 (file)
  */
 DECLARE_GLOBAL_DATA_PTR;
 
+/*
+ * fdt points to our working device tree.
+ */
+struct fdt_header *fdt;
+
 
 /********************************************************************/
 
@@ -56,7 +61,7 @@ int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force)
        }
 
        if (initrd_start && initrd_end) {
-               struct fdt_reserve_entry *re;
+               struct fdt_reserve_entry re;
                int  used;
                int  total;
                int  j;
@@ -67,7 +72,7 @@ int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force)
                        return err;
                }
                if (used >= total) {
-                       printf("fdt_chosen: no room in the reserved map (%d of %d)\n",
+                       printf("WARNING fdt_chosen: no room in the reserved map (%d of %d)\n",
                                used, total);
                        return -1;
                }
@@ -77,7 +82,7 @@ int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force)
                 */
                for (j = 0; j < used; j++) {
                        err = fdt_get_reservemap(fdt, j, &re);
-                       if (re->address == initrd_start) {
+                       if (re.address == initrd_start) {
                                break;
                        }
                }
@@ -92,7 +97,7 @@ int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force)
        /*
         * Find the "chosen" node.
         */
-       nodeoffset = fdt_path_offset (fdt, "/chosen");
+       nodeoffset = fdt_find_node_by_path (fdt, "/chosen");
 
        /*
         * If we have a "chosen" node already the "force the writing"
@@ -110,7 +115,7 @@ int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force)
                 */
                nodeoffset = fdt_add_subnode(fdt, 0, "chosen");
                if (nodeoffset < 0) {
-                       printf("libfdt: %s\n", fdt_strerror(nodeoffset));
+                       printf("WARNING fdt_chosen: could not create the \"/chosen node\" (libfdt error %s).\n", fdt_strerror(nodeoffset));
                        return nodeoffset;
                }
        }
@@ -122,38 +127,38 @@ int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force)
        if (str != NULL) {
                err = fdt_setprop(fdt, nodeoffset, "bootargs", str, strlen(str)+1);
                if (err < 0)
-                       printf("libfdt: %s\n", fdt_strerror(err));
+                       printf("WARNING fdt_chosen: could not set \"bootargs\" (libfdt error %s).\n", fdt_strerror(err));
        }
        if (initrd_start && initrd_end) {
                tmp = __cpu_to_be32(initrd_start);
                err = fdt_setprop(fdt, nodeoffset, "linux,initrd-start", &tmp, sizeof(tmp));
                if (err < 0)
-                       printf("libfdt: %s\n", fdt_strerror(err));
+                       printf("WARNING fdt_chosen: could not set \"linux,initrd-start\" (libfdt error %s).\n", fdt_strerror(err));
                tmp = __cpu_to_be32(initrd_end);
                err = fdt_setprop(fdt, nodeoffset, "linux,initrd-end", &tmp, sizeof(tmp));
                if (err < 0)
-                       printf("libfdt: %s\n", fdt_strerror(err));
+                       printf("WARNING fdt_chosen: could not set \"linux,initrd-end\" (libfdt error %s).\n", fdt_strerror(err));
        }
 #ifdef OF_STDOUT_PATH
        err = fdt_setprop(fdt, nodeoffset, "linux,stdout-path", OF_STDOUT_PATH, strlen(OF_STDOUT_PATH)+1);
        if (err < 0)
-               printf("libfdt: %s\n", fdt_strerror(err));
+               printf("WARNING fdt_chosen: could not set \"linux,stdout-path\" (libfdt error %s).\n", fdt_strerror(err));
 #endif
 
-       nodeoffset = fdt_path_offset (fdt, "/cpus");
+       nodeoffset = fdt_find_node_by_path (fdt, "/cpus");
        if (nodeoffset >= 0) {
                clock = cpu_to_be32(bd->bi_intfreq);
                err = fdt_setprop(fdt, nodeoffset, "clock-frequency", &clock, 4);
                if (err < 0)
-                       printf("libfdt: %s\n", fdt_strerror(err));
+                       printf("WARNING fdt_chosen: could not set \"clock-frequency\" (libfdt error %s).\n", fdt_strerror(err));
        }
 #ifdef OF_TBCLK
-       nodeoffset = fdt_path_offset (fdt, "/cpus/" OF_CPU "/timebase-frequency");
+       nodeoffset = fdt_find_node_by_path (fdt, "/cpus/" OF_CPU "/timebase-frequency");
        if (nodeoffset >= 0) {
                clock = cpu_to_be32(OF_TBCLK);
                err = fdt_setprop(fdt, nodeoffset, "clock-frequency", &clock, 4);
                if (err < 0)
-                       printf("libfdt: %s\n", fdt_strerror(err));
+                       printf("WARNING fdt_chosen: could not set \"clock-frequency\" (libfdt error %s).\n", fdt_strerror(err));
        }
 #endif
        return err;
@@ -185,7 +190,7 @@ int fdt_env(void *fdt)
         * See if we already have a "u-boot-env" node, delete it if so.
         * Then create a new empty node.
         */
-       nodeoffset = fdt_path_offset (fdt, "/u-boot-env");
+       nodeoffset = fdt_find_node_by_path (fdt, "/u-boot-env");
        if (nodeoffset >= 0) {
                err = fdt_del_node(fdt, nodeoffset);
                if (err < 0) {
@@ -198,7 +203,7 @@ int fdt_env(void *fdt)
         */
        nodeoffset = fdt_add_subnode(fdt, 0, "u-boot-env");
        if (nodeoffset < 0) {
-               printf("libfdt: %s\n", fdt_strerror(nodeoffset));
+               printf("WARNING fdt_env: could not create the \"/u-boot-env node\" (libfdt error %s).\n", fdt_strerror(nodeoffset));
                return nodeoffset;
        }
 
@@ -226,7 +231,7 @@ int fdt_env(void *fdt)
                        continue;
                err = fdt_setprop(fdt, nodeoffset, lval, rval, strlen(rval)+1);
                if (err < 0) {
-                       printf("libfdt: %s\n", fdt_strerror(err));
+                       printf("WARNING fdt_env: could not set \"%s\" (libfdt error %s).\n", lval, fdt_strerror(err));
                        return err;
                }
        }
@@ -305,7 +310,7 @@ int fdt_bd_t(void *fdt)
         * See if we already have a "bd_t" node, delete it if so.
         * Then create a new empty node.
         */
-       nodeoffset = fdt_path_offset (fdt, "/bd_t");
+       nodeoffset = fdt_find_node_by_path (fdt, "/bd_t");
        if (nodeoffset >= 0) {
                err = fdt_del_node(fdt, nodeoffset);
                if (err < 0) {
@@ -318,6 +323,7 @@ int fdt_bd_t(void *fdt)
         */
        nodeoffset = fdt_add_subnode(fdt, 0, "bd_t");
        if (nodeoffset < 0) {
+               printf("WARNING fdt_bd_t: could not create the \"/bd_t node\" (libfdt error %s).\n", fdt_strerror(nodeoffset));
                printf("libfdt: %s\n", fdt_strerror(nodeoffset));
                return nodeoffset;
        }
@@ -328,17 +334,17 @@ int fdt_bd_t(void *fdt)
                tmp = cpu_to_be32(getenv("bootargs"));
                err = fdt_setprop(fdt, nodeoffset, bd_map[i].name, &tmp, sizeof(tmp));
                if (err < 0)
-                       printf("libfdt: %s\n", fdt_strerror(err));
+                       printf("WARNING fdt_bd_t: could not set \"%s\" (libfdt error %s).\n", bd_map[i].name, fdt_strerror(err));
        }
        /*
         * Add a couple of oddball entries...
         */
        err = fdt_setprop(fdt, nodeoffset, "enetaddr", &bd->bi_enetaddr, 6);
        if (err < 0)
-               printf("libfdt: %s\n", fdt_strerror(err));
+               printf("WARNING fdt_bd_t: could not set \"enetaddr\" (libfdt error %s).\n", fdt_strerror(err));
        err = fdt_setprop(fdt, nodeoffset, "ethspeed", &bd->bi_ethspeed, 4);
        if (err < 0)
-               printf("libfdt: %s\n", fdt_strerror(err));
+               printf("WARNING fdt_bd_t: could not set \"ethspeed\" (libfdt error %s).\n", fdt_strerror(err));
 
        return 0;
 }