|
@@ -1133,6 +1133,101 @@ static inline int fdt_setprop_cell(void *fdt, int nodeoffset, const char *name,
|
|
|
#define fdt_setprop_string(fdt, nodeoffset, name, str) \
|
|
|
fdt_setprop((fdt), (nodeoffset), (name), (str), strlen(str)+1)
|
|
|
|
|
|
+/**
|
|
|
+ * fdt_appendprop - append to or create a property
|
|
|
+ * @fdt: pointer to the device tree blob
|
|
|
+ * @nodeoffset: offset of the node whose property to change
|
|
|
+ * @name: name of the property to append to
|
|
|
+ * @val: pointer to data to append to the property value
|
|
|
+ * @len: length of the data to append to the property value
|
|
|
+ *
|
|
|
+ * fdt_appendprop() appends the value to the named property in the
|
|
|
+ * given node, creating the property if it does not already exist.
|
|
|
+ *
|
|
|
+ * This function may insert data into 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
|
|
|
+ */
|
|
|
+int fdt_appendprop(void *fdt, int nodeoffset, const char *name,
|
|
|
+ const void *val, int len);
|
|
|
+
|
|
|
+/**
|
|
|
+ * fdt_appendprop_cell - append a single cell value to a 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: 32-bit integer value to append to the property (native endian)
|
|
|
+ *
|
|
|
+ * fdt_appendprop_cell() appends the given cell value (converting to
|
|
|
+ * big-endian if necessary) to the value of the named property in the
|
|
|
+ * given node, or creates a new property with that value if it does
|
|
|
+ * not already exist.
|
|
|
+ *
|
|
|
+ * This function may insert data into 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
|
|
|
+ */
|
|
|
+static inline int fdt_appendprop_cell(void *fdt, int nodeoffset,
|
|
|
+ const char *name, uint32_t val)
|
|
|
+{
|
|
|
+ val = cpu_to_fdt32(val);
|
|
|
+ return fdt_appendprop(fdt, nodeoffset, name, &val, sizeof(val));
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * fdt_appendprop_string - append a string to a property
|
|
|
+ * @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 to append to the property
|
|
|
+ *
|
|
|
+ * fdt_appendprop_string() appends the given string to the value of
|
|
|
+ * the named property in the given node, or creates a new property
|
|
|
+ * with that value if it does not already exist.
|
|
|
+ *
|
|
|
+ * This function may insert data into 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_appendprop_string(fdt, nodeoffset, name, str) \
|
|
|
+ fdt_appendprop((fdt), (nodeoffset), (name), (str), strlen(str)+1)
|
|
|
+
|
|
|
/**
|
|
|
* fdt_delprop - delete a property
|
|
|
* @fdt: pointer to the device tree blob
|