*pprev = NULL;
 }
 
-static unsigned int populate_node(const void *blob,
-                                 int offset,
-                                 void **mem,
-                                 struct device_node *dad,
-                                 unsigned int fpsize,
-                                 struct device_node **pnp,
-                                 bool dryrun)
+static bool populate_node(const void *blob,
+                         int offset,
+                         void **mem,
+                         struct device_node *dad,
+                         struct device_node **pnp,
+                         bool dryrun)
 {
        struct device_node *np;
        const char *pathp;
        unsigned int l, allocl;
-       int new_format = 0;
 
        pathp = fdt_get_name(blob, offset, &l);
        if (!pathp) {
                *pnp = NULL;
-               return 0;
+               return false;
        }
 
        allocl = ++l;
 
-       /* version 0x10 has a more compact unit name here instead of the full
-        * path. we accumulate the full path size using "fpsize", we'll rebuild
-        * it later. We detect this because the first character of the name is
-        * not '/'.
-        */
-       if ((*pathp) != '/') {
-               new_format = 1;
-               if (fpsize == 0) {
-                       /* root node: special case. fpsize accounts for path
-                        * plus terminating zero. root node only has '/', so
-                        * fpsize should be 2, but we want to avoid the first
-                        * level nodes to have two '/' so we use fpsize 1 here
-                        */
-                       fpsize = 1;
-                       allocl = 2;
-                       l = 1;
-                       pathp = "";
-               } else {
-                       /* account for '/' and path size minus terminal 0
-                        * already in 'l'
-                        */
-                       fpsize += l;
-                       allocl = fpsize;
-               }
-       }
-
        np = unflatten_dt_alloc(mem, sizeof(struct device_node) + allocl,
                                __alignof__(struct device_node));
        if (!dryrun) {
                char *fn;
                of_node_init(np);
                np->full_name = fn = ((char *)np) + sizeof(*np);
-               if (new_format) {
-                       /* rebuild full path for new format */
-                       if (dad && dad->parent) {
-                               strcpy(fn, dad->full_name);
-#ifdef DEBUG
-                               if ((strlen(fn) + l + 1) != allocl) {
-                                       pr_debug("%s: p: %d, l: %d, a: %d\n",
-                                               pathp, (int)strlen(fn),
-                                               l, allocl);
-                               }
-#endif
-                               fn += strlen(fn);
-                       }
-                       *(fn++) = '/';
-               }
+
                memcpy(fn, pathp, l);
 
                if (dad != NULL) {
        }
 
        *pnp = np;
-       return fpsize;
+       return true;
 }
 
 static void reverse_nodes(struct device_node *parent)
        struct device_node *root;
        int offset = 0, depth = 0, initial_depth = 0;
 #define FDT_MAX_DEPTH  64
-       unsigned int fpsizes[FDT_MAX_DEPTH];
        struct device_node *nps[FDT_MAX_DEPTH];
        void *base = mem;
        bool dryrun = !base;
                depth = initial_depth = 1;
 
        root = dad;
-       fpsizes[depth] = dad ? strlen(of_node_full_name(dad)) : 0;
        nps[depth] = dad;
 
        for (offset = 0;
                if (WARN_ON_ONCE(depth >= FDT_MAX_DEPTH))
                        continue;
 
-               fpsizes[depth+1] = populate_node(blob, offset, &mem,
-                                                nps[depth],
-                                                fpsizes[depth],
-                                                &nps[depth+1], dryrun);
-               if (!fpsizes[depth+1])
+               if (!populate_node(blob, offset, &mem, nps[depth],
+                                  &nps[depth+1], dryrun))
                        return mem - base;
 
                if (!dryrun && nodepp && !*nodepp)