⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 libfdt.h

📁 U-boot源码 ARM7启动代码
💻 H
📖 第 1 页 / 共 2 页
字号:
 *		-FDT_ERR_BADSTATE, *		-FDT_ERR_BADSTRUCTURE, *		-FDT_ERR_TRUNCATED, standard meanings */const struct fdt_property *fdt_get_property(const void *fdt, int nodeoffset,					    const char *name, int *lenp);static inline struct fdt_property *fdt_get_property_w(void *fdt, int nodeoffset,						      const char *name,						      int *lenp){	return (struct fdt_property *)fdt_get_property(fdt, nodeoffset,						       name, lenp);}/** * fdt_getprop - retrieve the value of a given property * @fdt: pointer to the device tree blob * @nodeoffset: offset of the node whose property to find * @name: name of the property to find * @lenp: pointer to an integer variable (will be overwritten) or NULL * * fdt_getprop() retrieves a pointer to the value of the property * named 'name' of the node at offset nodeoffset (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 also * returned, in the integer pointed to by lenp. * * returns: *	pointer to the property's value *		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_NOTFOUND, node does not have named property *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag *		-FDT_ERR_BADMAGIC, *		-FDT_ERR_BADVERSION, *		-FDT_ERR_BADSTATE, *		-FDT_ERR_BADSTRUCTURE, *		-FDT_ERR_TRUNCATED, standard meanings */const void *fdt_getprop(const void *fdt, int nodeoffset,			const char *name, int *lenp);static inline void *fdt_getprop_w(void *fdt, int nodeoffset,				  const char *name, int *lenp){	return (void *)fdt_getprop(fdt, nodeoffset, name, lenp);}/** * fdt_get_phandle - retreive the phandle of a given node * @fdt: pointer to the device tree blob * @nodeoffset: structure block offset of the node * * fdt_get_phandle() retrieves the phandle of the device tree node at * structure block offset nodeoffset. * * returns: *	the phandle of the node at nodeoffset, on succes (!= 0, != -1) *	0, if the node has no phandle, or another error occurs */uint32_t fdt_get_phandle(const void *fdt, int nodeoffset);/** * fdt_get_path - determine the full path of a node * @fdt: pointer to the device tree blob * @nodeoffset: offset of the node whose path to find * @buf: character buffer to contain the returned path (will be overwritten) * @buflen: size of the character buffer at buf * * fdt_get_path() computes the full path of the node at offset * nodeoffset, and records that path in the buffer at buf. * * NOTE: This function is expensive, as it must scan the device tree * structure from the start to nodeoffset. * * returns: *	0, on success *		buf contains the absolute path of the node at *		nodeoffset, as a NUL-terminated string. * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag *	-FDT_ERR_NOSPACE, the path of the given node is longer than (bufsize-1) *		characters and will not fit in the given buffer. *	-FDT_ERR_BADMAGIC, *	-FDT_ERR_BADVERSION, *	-FDT_ERR_BADSTATE, *	-FDT_ERR_BADSTRUCTURE, standard meanings */int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen);/** * fdt_supernode_atdepth_offset - find a specific ancestor of a node * @fdt: pointer to the device tree blob * @nodeoffset: offset of the node whose parent to find * @supernodedepth: depth of the ancestor to find * @nodedepth: pointer to an integer variable (will be overwritten) or NULL * * fdt_supernode_atdepth_offset() finds an ancestor of the given node * at a specific depth from the root (where the root itself has depth * 0, its immediate subnodes depth 1 and so forth).  So *	fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, NULL); * will always return 0, the offset of the root node.  If the node at * nodeoffset has depth D, then: *	fdt_supernode_atdepth_offset(fdt, nodeoffset, D, NULL); * will return nodeoffset itself. * * NOTE: This function is expensive, as it must scan the device tree * structure from the start to nodeoffset. * * returns: *	structure block offset of the node at node offset's ancestor *		of depth supernodedepth (>=0), on success * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag*	-FDT_ERR_NOTFOUND, supernodedepth was greater than the depth of nodeoffset *	-FDT_ERR_BADMAGIC, *	-FDT_ERR_BADVERSION, *	-FDT_ERR_BADSTATE, *	-FDT_ERR_BADSTRUCTURE, standard meanings */int fdt_supernode_atdepth_offset(const void *fdt, int nodeoffset,				 int supernodedepth, int *nodedepth);/** * fdt_node_depth - find the depth of a given node * @fdt: pointer to the device tree blob * @nodeoffset: offset of the node whose parent to find * * fdt_node_depth() finds the depth of a given node.  The root node * has depth 0, its immediate subnodes depth 1 and so forth. * * NOTE: This function is expensive, as it must scan the device tree * structure from the start to nodeoffset. * * returns: *	depth of the node at nodeoffset (>=0), on success * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag *	-FDT_ERR_BADMAGIC, *	-FDT_ERR_BADVERSION, *	-FDT_ERR_BADSTATE, *	-FDT_ERR_BADSTRUCTURE, standard meanings */int fdt_node_depth(const void *fdt, int nodeoffset);/** * fdt_parent_offset - find the parent of a given node * @fdt: pointer to the device tree blob * @nodeoffset: offset of the node whose parent to find * * fdt_parent_offset() locates the parent node of a given node (that * is, it finds the offset of the node which contains the node at * nodeoffset as a subnode). * * NOTE: This function is expensive, as it must scan the device tree * structure from the start to nodeoffset, *twice*. * * returns: *	stucture block offset of the parent of the node at nodeoffset *		(>=0), on success * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag *	-FDT_ERR_BADMAGIC, *	-FDT_ERR_BADVERSION, *	-FDT_ERR_BADSTATE, *	-FDT_ERR_BADSTRUCTURE, standard meanings */int fdt_parent_offset(const void *fdt, int nodeoffset);/** * fdt_node_offset_by_prop_value - find nodes with a given property value * @fdt: pointer to the device tree blob * @startoffset: only find nodes after this offset * @propname: property name to check * @propval: property value to search for * @proplen: length of the value in propval * * fdt_node_offset_by_prop_value() returns the offset of the first * node after startoffset, which has a property named propname whose * value is of length proplen and has value equal to propval; or if * startoffset is -1, the very first such node in the tree. * * To iterate through all nodes matching the criterion, the following * idiom can be used: *	offset = fdt_node_offset_by_prop_value(fdt, -1, propname, *					       propval, proplen); *	while (offset != -FDT_ERR_NOTFOUND) { *		// other code here *		offset = fdt_node_offset_by_prop_value(fdt, offset, propname, *						       propval, proplen); *	} * * Note the -1 in the first call to the function, if 0 is used here * instead, the function will never locate the root node, even if it * matches the criterion. * * returns: *	structure block offset of the located node (>= 0, >startoffset), *		 on success *	-FDT_ERR_NOTFOUND, no node matching the criterion exists in the *		tree after startoffset * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag *	-FDT_ERR_BADMAGIC, *	-FDT_ERR_BADVERSION, *	-FDT_ERR_BADSTATE, *	-FDT_ERR_BADSTRUCTURE, standard meanings */int fdt_node_offset_by_prop_value(const void *fdt, int startoffset,				  const char *propname,				  const void *propval, int proplen);/** * fdt_node_offset_by_phandle - find the node with a given phandle * @fdt: pointer to the device tree blob * @phandle: phandle value * * fdt_node_offset_by_prop_value() returns the offset of the node * which has the given phandle value.  If there is more than one node * in the tree with the given phandle (an invalid tree), results are * undefined. * * returns: *	structure block offset of the located node (>= 0), on success *	-FDT_ERR_NOTFOUND, no node with that phandle exists *	-FDT_ERR_BADPHANDLE, given phandle value was invalid (0 or -1) *	-FDT_ERR_BADMAGIC, *	-FDT_ERR_BADVERSION, *	-FDT_ERR_BADSTATE, *	-FDT_ERR_BADSTRUCTURE, standard meanings */int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle);/** * fdt_node_check_compatible: check a node's compatible property * @fdt: pointer to the device tree blob * @nodeoffset: offset of a tree node * @compatible: string to match against * * * fdt_node_check_compatible() returns 0 if the given node contains a * 'compatible' property with the given string as one of its elements, * it returns non-zero otherwise, or on error. * * returns: *	0, if the node has a 'compatible' property listing the given string *	1, if the node has a 'compatible' property, but it does not list *		the given string *	-FDT_ERR_NOTFOUND, if the given node has no 'compatible' property * 	-FDT_ERR_BADOFFSET, if nodeoffset does not refer to a BEGIN_NODE tag *	-FDT_ERR_BADMAGIC, *	-FDT_ERR_BADVERSION, *	-FDT_ERR_BADSTATE, *	-FDT_ERR_BADSTRUCTURE, standard meanings */int fdt_node_check_compatible(const void *fdt, int nodeoffset,			      const char *compatible);/** * fdt_node_offset_by_compatible - find nodes with a given 'compatible' value * @fdt: pointer to the device tree blob * @startoffset: only find nodes after this offset * @compatible: 'compatible' string to match against * * fdt_node_offset_by_compatible() returns the offset of the first * node after startoffset, which has a 'compatible' property which * lists the given compatible string; or if startoffset is -1, the * very first such node in the tree. * * To iterate through all nodes matching the criterion, the following * idiom can be used: *	offset = fdt_node_offset_by_compatible(fdt, -1, compatible); *	while (offset != -FDT_ERR_NOTFOUND) { *		// other code here *		offset = fdt_node_offset_by_compatible(fdt, offset, compatible); *	} * * Note the -1 in the first call to the function, if 0 is used here * instead, the function will never locate the root node, even if it * matches the criterion. * * returns: *	structure block offset of the located node (>= 0, >startoffset), *		 on success *	-FDT_ERR_NOTFOUND, no node matching the criterion exists in the *		tree after startoffset * 	-FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag *	-FDT_ERR_BADMAGIC, *	-FDT_ERR_BADVERSION, *	-FDT_ERR_BADSTATE, *	-FDT_ERR_BADSTRUCTURE, standard meanings */int fdt_node_offset_by_compatible(const void *fdt, int startoffset,				  const char *compatible);/**********************************************************************//* Write-in-place functions                                           *//**********************************************************************/int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name,			const void *val, int len);static inline int fdt_setprop_inplace_cell(void *fdt, int nodeoffset,					   const char *name, uint32_t val){	val = cpu_to_fdt32(val);	return fdt_setprop_inplace(fdt, nodeoffset, name, &val, sizeof(val));}int fdt_nop_property(void *fdt, int nodeoffset, const char *name);int fdt_nop_node(void *fdt, int nodeoffset);/**********************************************************************//* Sequential write functions                                         *//**********************************************************************/int fdt_create(void *buf, int bufsize);int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size);int fdt_finish_reservemap(void *fdt);int fdt_begin_node(void *fdt, const char *name);int fdt_property(void *fdt, const char *name, const void *val, int len);static inline int fdt_property_cell(void *fdt, const char *name, uint32_t val){	val = cpu_to_fdt32(val);	return fdt_property(fdt, name, &val, sizeof(val));}#define fdt_property_string(fdt, name, str) \	fdt_property(fdt, name, str, strlen(str)+1)int fdt_end_node(void *fdt);int fdt_finish(void *fdt);/**********************************************************************//* Read-write functions                                               *//**********************************************************************/int fdt_open_into(const void *fdt, void *buf, int bufsize);int fdt_pack(void *fdt);int fdt_add_mem_rsv(void *fdt, uint64_t address, uint64_t size);int fdt_del_mem_rsv(void *fdt, int n);int fdt_setprop(void *fdt, int nodeoffset, const char *name,		const void *val, int len);static inline int fdt_setprop_cell(void *fdt, int nodeoffset, const char *name,				   uint32_t val){	val = cpu_to_fdt32(val);	return fdt_setprop(fdt, nodeoffset, name, &val, sizeof(val));}#define fdt_setprop_string(fdt, nodeoffset, name, str) \	fdt_setprop((fdt), (nodeoffset), (name), (str), strlen(str)+1)int fdt_delprop(void *fdt, int nodeoffset, const char *name);int fdt_add_subnode_namelen(void *fdt, int parentoffset,			    const char *name, int namelen);int fdt_add_subnode(void *fdt, int parentoffset, const char *name);int fdt_del_node(void *fdt, int nodeoffset);/**********************************************************************//* Debugging / informational functions                                *//**********************************************************************/const char *fdt_strerror(int errval);#endif /* _LIBFDT_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -