
Since U-Boot supports both a live tree and a flat tree, we need an easy way to access the tree without worrying about which is currently active. To support this, U-Boot has the concept of an ofnode, which can refer either to a live tree node or a flat tree node.
For the live tree, the reference contains a pointer to the node (struct device_node *) or NULL if the node is invalid. For the flat tree, the reference contains the node offset or -1 if the node is invalid.
Add a basic set of operations using ofnodes. These are implemented by using either libfdt functions (in the case of a flat DT reference) or the live-tree of_...() functions.
Note that it is not possible to have both live and flat references active at the same time. As soon as the live tree is available, everything in U-Boot should switch to using that. This avoids confusion and allows us to assume that the type of a reference is simply based on whether we have a live tree yet, or not.
Signed-off-by: Simon Glass sjg@chromium.org ---
Changes in v3: - Adjust header includes in ofnode.h to make it stand alone
Changes in v2: None
drivers/core/Makefile | 1 + drivers/core/ofnode.c | 552 ++++++++++++++++++++++++++++++++++++++++++++++++++ include/dm/ofnode.h | 467 +++++++++++++++++++++++++++++++++++++++++- 3 files changed, 1017 insertions(+), 3 deletions(-) create mode 100644 drivers/core/ofnode.c
Applied to u-boot-dm