|
@@ -655,8 +655,65 @@ int fdt_node_offset_by_compatible(const void *fdt, int startoffset,
|
|
|
/* Write-in-place functions */
|
|
|
/**********************************************************************/
|
|
|
|
|
|
+/**
|
|
|
+ * fdt_setprop_inplace - change a property's value, but not its size
|
|
|
+ * @fdt: pointer to the device tree blob
|
|
|
+ * @nodeoffset: offset of the node whose property to change
|
|
|
+ * @name: name of the property to change
|
|
|
+ * @val: pointer to data to replace the property value with
|
|
|
+ * @len: length of the property value
|
|
|
+ *
|
|
|
+ * fdt_setprop_inplace() replaces the value of a given property with
|
|
|
+ * the data in val, of length len. This function cannot change the
|
|
|
+ * size of a property, and so will only work if len is equal to the
|
|
|
+ * current length of the property.
|
|
|
+ *
|
|
|
+ * This function will alter only the bytes in the blob which contain
|
|
|
+ * the given property value, and will not alter or move any other part
|
|
|
+ * of the tree.
|
|
|
+ *
|
|
|
+ * returns:
|
|
|
+ * 0, on success
|
|
|
+ * -FDT_ERR_NOSPACE, if len is not equal to the property's current length
|
|
|
+ * -FDT_ERR_NOTFOUND, node does not have the 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
|
|
|
+ */
|
|
|
int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name,
|
|
|
const void *val, int len);
|
|
|
+
|
|
|
+/**
|
|
|
+ * fdt_setprop_inplace_cell - change the value of a single-cell property
|
|
|
+ * @fdt: pointer to the device tree blob
|
|
|
+ * @nodeoffset: offset of the node whose property to change
|
|
|
+ * @name: name of the property to change
|
|
|
+ * @val: cell (32-bit integer) value to replace the property with
|
|
|
+ *
|
|
|
+ * fdt_setprop_inplace_cell() replaces the value of a given property
|
|
|
+ * with the 32-bit integer cell value in val, converting val to
|
|
|
+ * big-endian if necessary. This function cannot change the size of a
|
|
|
+ * property, and so will only work if the property already exists and
|
|
|
+ * has length 4.
|
|
|
+ *
|
|
|
+ * This function will alter only the bytes in the blob which contain
|
|
|
+ * the given property value, and will not alter or move any other part
|
|
|
+ * of the tree.
|
|
|
+ *
|
|
|
+ * returns:
|
|
|
+ * 0, on success
|
|
|
+ * -FDT_ERR_NOSPACE, if the property's length is not equal to 4
|
|
|
+ * -FDT_ERR_NOTFOUND, node does not have the 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
|
|
|
+ */
|
|
|
static inline int fdt_setprop_inplace_cell(void *fdt, int nodeoffset,
|
|
|
const char *name, uint32_t val)
|
|
|
{
|
|
@@ -664,7 +721,54 @@ static inline int fdt_setprop_inplace_cell(void *fdt, int nodeoffset,
|
|
|
return fdt_setprop_inplace(fdt, nodeoffset, name, &val, sizeof(val));
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * fdt_nop_property - replace a property with nop tags
|
|
|
+ * @fdt: pointer to the device tree blob
|
|
|
+ * @nodeoffset: offset of the node whose property to nop
|
|
|
+ * @name: name of the property to nop
|
|
|
+ *
|
|
|
+ * fdt_nop_property() will replace a given property's representation
|
|
|
+ * in the blob with FDT_NOP tags, effectively removing it from the
|
|
|
+ * tree.
|
|
|
+ *
|
|
|
+ * This function will alter only the bytes in the blob which contain
|
|
|
+ * the property, and will not alter or move any other part of the
|
|
|
+ * tree.
|
|
|
+ *
|
|
|
+ * 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_BADMAGIC,
|
|
|
+ * -FDT_ERR_BADVERSION,
|
|
|
+ * -FDT_ERR_BADSTATE,
|
|
|
+ * -FDT_ERR_BADSTRUCTURE,
|
|
|
+ * -FDT_ERR_TRUNCATED, standard meanings
|
|
|
+ */
|
|
|
int fdt_nop_property(void *fdt, int nodeoffset, const char *name);
|
|
|
+
|
|
|
+/**
|
|
|
+ * fdt_nop_node - replace a node (subtree) with nop tags
|
|
|
+ * @fdt: pointer to the device tree blob
|
|
|
+ * @nodeoffset: offset of the node to nop
|
|
|
+ *
|
|
|
+ * fdt_nop_node() will replace a given node's representation in the
|
|
|
+ * blob, including all its subnodes, if any, with FDT_NOP tags,
|
|
|
+ * effectively removing it from the tree.
|
|
|
+ *
|
|
|
+ * This function will alter only the bytes in the blob which contain
|
|
|
+ * the node and its properties and subnodes, and will not alter or
|
|
|
+ * move any other part of the tree.
|
|
|
+ *
|
|
|
+ * returns:
|
|
|
+ * 0, on success
|
|
|
+ * -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
|
|
|
+ */
|
|
|
int fdt_nop_node(void *fdt, int nodeoffset);
|
|
|
|
|
|
/**********************************************************************/
|