aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2022-09-06 20:27:03 -0600
committerTom Rini <trini@konsulko.com>2022-09-29 16:07:58 -0400
commitc3a194dec97be3ceb74ba2c980e635aee1644d94 (patch)
tree3a6cc834b0952633c6a9b6684a65bcbaaa28361c
parentffe90392497898ccd8000e695901853e192a9007 (diff)
downloadu-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.c8
-rw-r--r--test/dm/ofnode.c3
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,