diff options
author | Simon Glass <sjg@chromium.org> | 2022-09-06 20:27:03 -0600 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2022-09-29 16:07:58 -0400 |
commit | c3a194dec97be3ceb74ba2c980e635aee1644d94 (patch) | |
tree | 3a6cc834b0952633c6a9b6684a65bcbaaa28361c | |
parent | ffe90392497898ccd8000e695901853e192a9007 (diff) | |
download | u-boot-c3a194dec97be3ceb74ba2c980e635aee1644d94.zip u-boot-c3a194dec97be3ceb74ba2c980e635aee1644d94.tar.gz u-boot-c3a194dec97be3ceb74ba2c980e635aee1644d94.tar.bz2 |
dm: core: Support writing a property to an empty node
At present this does not work with livetree. Fix it and add a test.
Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r-- | drivers/core/of_access.c | 8 | ||||
-rw-r--r-- | test/dm/ofnode.c | 3 |
2 files changed, 7 insertions, 4 deletions
diff --git a/drivers/core/of_access.c b/drivers/core/of_access.c index de63271..8631e1c 100644 --- a/drivers/core/of_access.c +++ b/drivers/core/of_access.c @@ -947,9 +947,6 @@ int of_write_prop(struct device_node *np, const char *propname, int len, pp_last = pp; } - if (!pp_last) - return -ENOENT; - /* Property does not exist -> append new property */ new = malloc(sizeof(struct property)); if (!new) @@ -965,7 +962,10 @@ int of_write_prop(struct device_node *np, const char *propname, int len, new->length = len; new->next = NULL; - pp_last->next = new; + if (pp_last) + pp_last->next = new; + else + np->properties = new; return 0; } diff --git a/test/dm/ofnode.c b/test/dm/ofnode.c index 543dc54..0f65ff9 100644 --- a/test/dm/ofnode.c +++ b/test/dm/ofnode.c @@ -672,6 +672,9 @@ static int dm_test_ofnode_add_subnode(struct unit_test_state *uts) malloc_disable_testing(); } + /* write to the empty node */ + ut_assertok(ofnode_write_string(subnode, "example", "text")); + return 0; } DM_TEST(dm_test_ofnode_add_subnode, |