u-boot/include/of_live.h
Simon Glass a8f2ac2ae6 fdt: Allow more general use of livetree
At present livetree can only be used for the control FDT. It is useful
to be able to use the ofnode API for other FDTs, e.g. those used by
the upcoming configuration editor.

We already have most of the support present, and tests can be marked with
the UT_TESTF_OTHER_FDT flag to use another FDT as a special case. But
with this change, the functionality becomes more generally available.

Plumb in the require support.

Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-14 12:54:51 -04:00

49 lines
1.3 KiB
C

/* SPDX-License-Identifier: GPL-2.0+ */
/*
* Copyright (c) 2017 Google, Inc
* Written by Simon Glass <sjg@chromium.org>
*
* Support for a 'live' (as opposed to flat) device tree
*/
#ifndef _OF_LIVE_H
#define _OF_LIVE_H
struct device_node;
/**
* of_live_build() - build a live (hierarchical) tree from a flat DT
*
* @fdt_blob: Input tree to convert
* @rootp: Returns live tree that was created
* Return: 0 if OK, -ve on error
*/
int of_live_build(const void *fdt_blob, struct device_node **rootp);
/**
* unflatten_device_tree() - create tree of device_nodes from flat blob
*
* Note that this allocates a single block of memory, pointed to by *mynodes.
* To free the tree, use free(*mynodes)
*
* unflattens a device-tree, creating the
* tree of struct device_node. It also fills the "name" and "type"
* pointers of the nodes so the normal device-tree walking functions
* can be used.
* @blob: The blob to expand
* @mynodes: The device_node tree created by the call
* Return: 0 if OK, -ve on error
*/
int unflatten_device_tree(const void *blob, struct device_node **mynodes);
/**
* of_live_free() - Dispose of a livetree
*
* This frees memory used by the tree, after which @root becomes invalid and
* cannot be used
*
* @root: Tree to dispose
*/
void of_live_free(struct device_node *root);
#endif