|
@@ -342,6 +342,75 @@ int fdt_path_offset(const void *fdt, const char *path);
|
|
*/
|
|
*/
|
|
const char *fdt_get_name(const void *fdt, int nodeoffset, int *lenp);
|
|
const char *fdt_get_name(const void *fdt, int nodeoffset, int *lenp);
|
|
|
|
|
|
|
|
+/**
|
|
|
|
+ * fdt_first_property_offset - find the offset of a node's first property
|
|
|
|
+ * @fdt: pointer to the device tree blob
|
|
|
|
+ * @nodeoffset: structure block offset of a node
|
|
|
|
+ *
|
|
|
|
+ * fdt_first_property_offset() finds the first property of the node at
|
|
|
|
+ * the given structure block offset.
|
|
|
|
+ *
|
|
|
|
+ * returns:
|
|
|
|
+ * structure block offset of the property (>=0), on success
|
|
|
|
+ * -FDT_ERR_NOTFOUND, if the requested node has no properties
|
|
|
|
+ * -FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_BEGIN_NODE tag
|
|
|
|
+ * -FDT_ERR_BADMAGIC,
|
|
|
|
+ * -FDT_ERR_BADVERSION,
|
|
|
|
+ * -FDT_ERR_BADSTATE,
|
|
|
|
+ * -FDT_ERR_BADSTRUCTURE,
|
|
|
|
+ * -FDT_ERR_TRUNCATED, standard meanings.
|
|
|
|
+ */
|
|
|
|
+int fdt_first_property_offset(const void *fdt, int nodeoffset);
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * fdt_next_property_offset - step through a node's properties
|
|
|
|
+ * @fdt: pointer to the device tree blob
|
|
|
|
+ * @offset: structure block offset of a property
|
|
|
|
+ *
|
|
|
|
+ * fdt_next_property_offset() finds the property immediately after the
|
|
|
|
+ * one at the given structure block offset. This will be a property
|
|
|
|
+ * of the same node as the given property.
|
|
|
|
+ *
|
|
|
|
+ * returns:
|
|
|
|
+ * structure block offset of the next property (>=0), on success
|
|
|
|
+ * -FDT_ERR_NOTFOUND, if the given property is the last in its node
|
|
|
|
+ * -FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_PROP tag
|
|
|
|
+ * -FDT_ERR_BADMAGIC,
|
|
|
|
+ * -FDT_ERR_BADVERSION,
|
|
|
|
+ * -FDT_ERR_BADSTATE,
|
|
|
|
+ * -FDT_ERR_BADSTRUCTURE,
|
|
|
|
+ * -FDT_ERR_TRUNCATED, standard meanings.
|
|
|
|
+ */
|
|
|
|
+int fdt_next_property_offset(const void *fdt, int offset);
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * fdt_get_property_by_offset - retrieve the property at a given offset
|
|
|
|
+ * @fdt: pointer to the device tree blob
|
|
|
|
+ * @offset: offset of the property to retrieve
|
|
|
|
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
|
|
|
|
+ *
|
|
|
|
+ * fdt_get_property_by_offset() retrieves a pointer to the
|
|
|
|
+ * fdt_property structure within the device tree blob at the given
|
|
|
|
+ * offset. If lenp is non-NULL, the length of the property value is
|
|
|
|
+ * also returned, in the integer pointed to by lenp.
|
|
|
|
+ *
|
|
|
|
+ * returns:
|
|
|
|
+ * pointer to the structure representing the property
|
|
|
|
+ * if lenp is non-NULL, *lenp contains the length of the property
|
|
|
|
+ * value (>=0)
|
|
|
|
+ * NULL, on error
|
|
|
|
+ * if lenp is non-NULL, *lenp contains an error code (<0):
|
|
|
|
+ * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag
|
|
|
|
+ * -FDT_ERR_BADMAGIC,
|
|
|
|
+ * -FDT_ERR_BADVERSION,
|
|
|
|
+ * -FDT_ERR_BADSTATE,
|
|
|
|
+ * -FDT_ERR_BADSTRUCTURE,
|
|
|
|
+ * -FDT_ERR_TRUNCATED, standard meanings
|
|
|
|
+ */
|
|
|
|
+const struct fdt_property *fdt_get_property_by_offset(const void *fdt,
|
|
|
|
+ int offset,
|
|
|
|
+ int *lenp);
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* fdt_get_property_namelen - find a property based on substring
|
|
* fdt_get_property_namelen - find a property based on substring
|
|
* @fdt: pointer to the device tree blob
|
|
* @fdt: pointer to the device tree blob
|
|
@@ -395,6 +464,40 @@ static inline struct fdt_property *fdt_get_property_w(void *fdt, int nodeoffset,
|
|
fdt_get_property(fdt, nodeoffset, name, lenp);
|
|
fdt_get_property(fdt, nodeoffset, name, lenp);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/**
|
|
|
|
+ * fdt_getprop_by_offset - retrieve the value of a property at a given offset
|
|
|
|
+ * @fdt: pointer to the device tree blob
|
|
|
|
+ * @ffset: offset of the property to read
|
|
|
|
+ * @namep: pointer to a string variable (will be overwritten) or NULL
|
|
|
|
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
|
|
|
|
+ *
|
|
|
|
+ * fdt_getprop_by_offset() retrieves a pointer to the value of the
|
|
|
|
+ * property at structure block offset 'offset' (this will be a pointer
|
|
|
|
+ * to within the device blob itself, not a copy of the value). If
|
|
|
|
+ * lenp is non-NULL, the length of the property value is also
|
|
|
|
+ * returned, in the integer pointed to by lenp. If namep is non-NULL,
|
|
|
|
+ * the property's namne will also be returned in the char * pointed to
|
|
|
|
+ * by namep (this will be a pointer to within the device tree's string
|
|
|
|
+ * block, not a new copy of the name).
|
|
|
|
+ *
|
|
|
|
+ * returns:
|
|
|
|
+ * pointer to the property's value
|
|
|
|
+ * if lenp is non-NULL, *lenp contains the length of the property
|
|
|
|
+ * value (>=0)
|
|
|
|
+ * if namep is non-NULL *namep contiains a pointer to the property
|
|
|
|
+ * name.
|
|
|
|
+ * NULL, on error
|
|
|
|
+ * if lenp is non-NULL, *lenp contains an error code (<0):
|
|
|
|
+ * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag
|
|
|
|
+ * -FDT_ERR_BADMAGIC,
|
|
|
|
+ * -FDT_ERR_BADVERSION,
|
|
|
|
+ * -FDT_ERR_BADSTATE,
|
|
|
|
+ * -FDT_ERR_BADSTRUCTURE,
|
|
|
|
+ * -FDT_ERR_TRUNCATED, standard meanings
|
|
|
|
+ */
|
|
|
|
+const void *fdt_getprop_by_offset(const void *fdt, int offset,
|
|
|
|
+ const char **namep, int *lenp);
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* fdt_getprop_namelen - get property value based on substring
|
|
* fdt_getprop_namelen - get property value based on substring
|
|
* @fdt: pointer to the device tree blob
|
|
* @fdt: pointer to the device tree blob
|