summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2022-09-07 05:27:02 +0300
committerTom Rini <trini@konsulko.com>2022-09-29 23:07:58 +0300
commitffe90392497898ccd8000e695901853e192a9007 (patch)
tree0331cda0c368be1cf676f0ea4e8c99e28125b8d0 /include
parent5ecba3ba40cebd5e4340f6fd422683bde773689c (diff)
downloadu-boot-ffe90392497898ccd8000e695901853e192a9007.tar.xz
dm: core: Allow adding ofnode subnodes
Add this feature to the ofnode interface, supporting both livetree and flattree. If the node exists it is returned, along with a -EEXIST error. Update the functions it calls to handle this too. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'include')
-rw-r--r--include/dm/of_access.h15
-rw-r--r--include/dm/ofnode.h13
2 files changed, 28 insertions, 0 deletions
diff --git a/include/dm/of_access.h b/include/dm/of_access.h
index d8c6d11643..dd70b44344 100644
--- a/include/dm/of_access.h
+++ b/include/dm/of_access.h
@@ -565,4 +565,19 @@ struct device_node *of_get_stdout(void);
int of_write_prop(struct device_node *np, const char *propname, int len,
const void *value);
+/**
+ * of_add_subnode() - add a new subnode to a node
+ *
+ * @node: parent node to add to
+ * @name: name of subnode
+ * @len: length of name (so the caller does not need to nul-terminate a
+ * partial string), or -1 for strlen(@name)
+ * @subnodep: returns pointer to new subnode (valid if the function returns 0
+ * or -EEXIST)
+ * Returns 0 if OK, -EEXIST if already exists, -ENOMEM if out of memory, other
+ * -ve on other error
+ */
+int of_add_subnode(struct device_node *node, const char *name, int len,
+ struct device_node **subnodep);
+
#endif
diff --git a/include/dm/ofnode.h b/include/dm/ofnode.h
index 6414b4648f..ec1ab0ce15 100644
--- a/include/dm/ofnode.h
+++ b/include/dm/ofnode.h
@@ -1300,6 +1300,19 @@ static inline const char *ofnode_conf_read_str(const char *prop_name)
{
return NULL;
}
+
#endif /* CONFIG_DM */
+/**
+ * of_add_subnode() - add a new subnode to a node
+ *
+ * @parent: parent node to add to
+ * @name: name of subnode
+ * @nodep: returns pointer to new subnode (valid if the function returns 0
+ * or -EEXIST)
+ * Returns 0 if OK, -EEXIST if already exists, -ENOMEM if out of memory, other
+ * -ve on other error
+ */
+int ofnode_add_subnode(ofnode parent, const char *name, ofnode *nodep);
+
#endif