} else {
int ooffset = fdt_subnode_offset(ofnode_to_fdt(node),
ofnode_to_offset(node), subnode_name);
- subnode = offset_to_ofnode(ooffset);
+ subnode = noffset_to_ofnode(node, ooffset);
}
debug("%s\n", ofnode_valid(subnode) ?
ofnode_get_name(subnode) : "<none>");
if (ofnode_is_np(node))
return np_to_ofnode(node.np->child);
- return offset_to_ofnode(
+ return noffset_to_ofnode(node,
fdt_first_subnode(ofnode_to_fdt(node), ofnode_to_offset(node)));
}
if (ofnode_is_np(node))
return np_to_ofnode(node.np->sibling);
- return offset_to_ofnode(
+ return noffset_to_ofnode(node,
fdt_next_subnode(ofnode_to_fdt(node), ofnode_to_offset(node)));
}
#endif /* !DM_INLINE_OFNODE */
return node;
}
+ofnode oftree_get_by_phandle(oftree tree, uint phandle)
+{
+ ofnode node;
+
+ if (of_live_active())
+ node = np_to_ofnode(of_find_node_by_phandle(tree.np, phandle));
+ else
+ node.of_offset =
+ fdt_node_offset_by_phandle(oftree_lookup_fdt(tree),
+ phandle);
+
+ return node;
+}
+
static fdt_addr_t __ofnode_get_addr_size_index(ofnode node, int index,
fdt_size_t *size, bool translate)
{
(struct device_node *)ofnode_to_np(from), NULL,
compat));
} else {
- return offset_to_ofnode(fdt_node_offset_by_compatible(
- ofnode_to_fdt(from),
+ return noffset_to_ofnode(from,
+ fdt_node_offset_by_compatible(ofnode_to_fdt(from),
ofnode_to_offset(from), compat));
}
}
(struct device_node *)ofnode_to_np(from), propname,
propval, proplen));
} else {
- return offset_to_ofnode(fdt_node_offset_by_prop_value(
- ofnode_to_fdt(from), ofnode_to_offset(from),
- propname, propval, proplen));
+ return noffset_to_ofnode(from,
+ fdt_node_offset_by_prop_value(ofnode_to_fdt(from),
+ ofnode_to_offset(from), propname, propval,
+ proplen));
}
}
}
if (offset < 0)
return -EINVAL;
- subnode = offset_to_ofnode(offset);
+ subnode = noffset_to_ofnode(node, offset);
}
*subnodep = subnode;