From c3a194dec97be3ceb74ba2c980e635aee1644d94 Mon Sep 17 00:00:00 2001
From: Simon Glass <sjg@chromium.org>
Date: Tue, 6 Sep 2022 20:27:03 -0600
Subject: [PATCH] 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>
---
 drivers/core/of_access.c | 8 ++++----
 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 de6327199a..8631e1c286 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 543dc546b9..0f65ff939f 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,
-- 
2.39.5