Skip to content
Snippets Groups Projects
libfdt.h 41.5 KiB
Newer Older
  • Learn to ignore specific revisions
  • 
    /**
     * fdt_setprop_string - set a property to a string value
     * @fdt: pointer to the device tree blob
     * @nodeoffset: offset of the node whose property to change
     * @name: name of the property to change
     * @str: string value for the property
     *
     * fdt_setprop_string() sets the value of the named property in the
     * given node to the given string value (using the length of the
     * string to determine the new length of the property), or creates a
     * new property with that value if it does not already exist.
     *
     * This function may insert or delete data from the blob, and will
     * therefore change the offsets of some existing nodes.
     *
     * returns:
     *	0, on success
     *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
     *		contain the new property value
     *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
     *	-FDT_ERR_BADLAYOUT,
     *	-FDT_ERR_BADMAGIC,
     *	-FDT_ERR_BADVERSION,
     *	-FDT_ERR_BADSTATE,
     *	-FDT_ERR_BADSTRUCTURE,
     *	-FDT_ERR_BADLAYOUT,
     *	-FDT_ERR_TRUNCATED, standard meanings
     */
    
    #define fdt_setprop_string(fdt, nodeoffset, name, str) \
    	fdt_setprop((fdt), (nodeoffset), (name), (str), strlen(str)+1)
    
    
    /**
     * fdt_delprop - delete a property
     * @fdt: pointer to the device tree blob
     * @nodeoffset: offset of the node whose property to nop
     * @name: name of the property to nop
     *
     * fdt_del_property() will delete the given property.
     *
     * This function will delete data from the blob, and will therefore
     * change the offsets of some existing nodes.
     *
     * returns:
     *	0, on success
     *	-FDT_ERR_NOTFOUND, node does not have the named property
     *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
     *	-FDT_ERR_BADLAYOUT,
     *	-FDT_ERR_BADMAGIC,
     *	-FDT_ERR_BADVERSION,
     *	-FDT_ERR_BADSTATE,
     *	-FDT_ERR_BADSTRUCTURE,
     *	-FDT_ERR_TRUNCATED, standard meanings
     */
    
    int fdt_delprop(void *fdt, int nodeoffset, const char *name);
    
    
    /**
     * fdt_add_subnode_namelen - creates a new node based on substring
     * @fdt: pointer to the device tree blob
     * @parentoffset: structure block offset of a node
     * @name: name of the subnode to locate
     * @namelen: number of characters of name to consider
     *
     * Identical to fdt_add_subnode(), but use only the first namelen
     * characters of name as the name of the new node.  This is useful for
     * creating subnodes based on a portion of a larger string, such as a
     * full path.
     */
    
    int fdt_add_subnode_namelen(void *fdt, int parentoffset,
    			    const char *name, int namelen);
    
    
    /**
     * fdt_add_subnode - creates a new node
     * @fdt: pointer to the device tree blob
     * @parentoffset: structure block offset of a node
     * @name: name of the subnode to locate
     *
     * fdt_add_subnode() creates a new node as a subnode of the node at
     * structure block offset parentoffset, with the given name (which
     * should include the unit address, if any).
     *
     * This function will insert data into the blob, and will therefore
     * change the offsets of some existing nodes.
    
     * returns:
     *	structure block offset of the created nodeequested subnode (>=0), on success
     *	-FDT_ERR_NOTFOUND, if the requested subnode does not exist
     *	-FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag
     *	-FDT_ERR_EXISTS, if the node at parentoffset already has a subnode of
     *		the given name
     *	-FDT_ERR_NOSPACE, if there is insufficient free space in the
     *		blob to contain the new node
     *	-FDT_ERR_NOSPACE
     *	-FDT_ERR_BADLAYOUT
     *      -FDT_ERR_BADMAGIC,
     *	-FDT_ERR_BADVERSION,
     *	-FDT_ERR_BADSTATE,
     *	-FDT_ERR_BADSTRUCTURE,
     *	-FDT_ERR_TRUNCATED, standard meanings.
     */
    
    int fdt_add_subnode(void *fdt, int parentoffset, const char *name);
    
    
    /**
     * fdt_del_node - delete a node (subtree)
     * @fdt: pointer to the device tree blob
     * @nodeoffset: offset of the node to nop
     *
     * fdt_del_node() will remove the given node, including all its
     * subnodes if any, from the blob.
     *
     * This function will delete data from the blob, and will therefore
     * change the offsets of some existing nodes.
     *
     * returns:
     *	0, on success
     *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
     *	-FDT_ERR_BADLAYOUT,
     *	-FDT_ERR_BADMAGIC,
     *	-FDT_ERR_BADVERSION,
     *	-FDT_ERR_BADSTATE,
     *	-FDT_ERR_BADSTRUCTURE,
     *	-FDT_ERR_TRUNCATED, standard meanings
     */
    
    int fdt_del_node(void *fdt, int nodeoffset);
    
    
    /**********************************************************************/
    /* Debugging / informational functions                                */
    /**********************************************************************/
    
    
    const char *fdt_strerror(int errval);
    
    #endif /* _LIBFDT_H */