mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-08 10:39:08 +00:00
dm: core: add ofnode and dev function to iterate on node property
Add functions to iterate on all property with livetree - dev_read_first_prop - dev_read_next_prop - dev_read_prop_by_prop and - ofnode_get_first_property - ofnode_get_next_property - ofnode_get_property_by_prop And helper: dev_for_each_property For example: struct ofprop property; dev_for_each_property(property, config) { value = dev_read_prop_by_prop(&property, &propname, &len); or: for (res = ofnode_get_first_property(node, &property); !res; res = ofnode_get_next_property(&property)) { value = ofnode_get_property_by_prop(&property, &propname, &len); .... } Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
719cab6d2e
commit
ce891fcada
8 changed files with 317 additions and 2 deletions
|
@ -58,6 +58,31 @@ struct ofnode_phandle_args {
|
|||
uint32_t args[OF_MAX_PHANDLE_ARGS];
|
||||
};
|
||||
|
||||
/**
|
||||
* ofprop - reference to a property of a device tree node
|
||||
*
|
||||
* This struct hold the reference on one property of one node,
|
||||
* using struct ofnode and an offset within the flat device tree or either
|
||||
* a pointer to a struct property in the live device tree.
|
||||
*
|
||||
* Thus we can reference arguments in both the live tree and the flat tree.
|
||||
*
|
||||
* The property reference can also hold a null reference. This corresponds to
|
||||
* a struct property NULL pointer or an offset of -1.
|
||||
*
|
||||
* @node: Pointer to device node
|
||||
* @offset: Pointer into flat device tree, used for flat tree.
|
||||
* @prop: Pointer to property, used for live treee.
|
||||
*/
|
||||
|
||||
struct ofprop {
|
||||
ofnode node;
|
||||
union {
|
||||
int offset;
|
||||
const struct property *prop;
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* _ofnode_to_np() - convert an ofnode to a live DT node pointer
|
||||
*
|
||||
|
@ -595,7 +620,7 @@ int ofnode_decode_display_timing(ofnode node, int index,
|
|||
struct display_timing *config);
|
||||
|
||||
/**
|
||||
* ofnode_get_property()- - get a pointer to the value of a node property
|
||||
* ofnode_get_property() - get a pointer to the value of a node property
|
||||
*
|
||||
* @node: node to read
|
||||
* @propname: property to read
|
||||
|
@ -604,6 +629,42 @@ int ofnode_decode_display_timing(ofnode node, int index,
|
|||
*/
|
||||
const void *ofnode_get_property(ofnode node, const char *propname, int *lenp);
|
||||
|
||||
/**
|
||||
* ofnode_get_first_property()- get the reference of the first property
|
||||
*
|
||||
* Get reference to the first property of the node, it is used to iterate
|
||||
* and read all the property with ofnode_get_property_by_prop().
|
||||
*
|
||||
* @node: node to read
|
||||
* @prop: place to put argument reference
|
||||
* @return 0 if OK, -ve on error. -FDT_ERR_NOTFOUND if not found
|
||||
*/
|
||||
int ofnode_get_first_property(ofnode node, struct ofprop *prop);
|
||||
|
||||
/**
|
||||
* ofnode_get_next_property() - get the reference of the next property
|
||||
*
|
||||
* Get reference to the next property of the node, it is used to iterate
|
||||
* and read all the property with ofnode_get_property_by_prop().
|
||||
*
|
||||
* @prop: reference of current argument and place to put reference of next one
|
||||
* @return 0 if OK, -ve on error. -FDT_ERR_NOTFOUND if not found
|
||||
*/
|
||||
int ofnode_get_next_property(struct ofprop *prop);
|
||||
|
||||
/**
|
||||
* ofnode_get_property_by_prop() - get a pointer to the value of a property
|
||||
*
|
||||
* Get value for the property identified by the provided reference.
|
||||
*
|
||||
* @prop: reference on property
|
||||
* @propname: If non-NULL, place to property name on success,
|
||||
* @lenp: If non-NULL, place to put length on success
|
||||
* @return 0 if OK, -ve on error. -FDT_ERR_NOTFOUND if not found
|
||||
*/
|
||||
const void *ofnode_get_property_by_prop(const struct ofprop *prop,
|
||||
const char **propname, int *lenp);
|
||||
|
||||
/**
|
||||
* ofnode_is_available() - check if a node is marked available
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue