]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
dm: core: Add support for writing u32 with ofnode
authorSimon Glass <sjg@chromium.org>
Sat, 30 Jul 2022 21:52:14 +0000 (15:52 -0600)
committerTom Rini <trini@konsulko.com>
Fri, 12 Aug 2022 12:14:24 +0000 (08:14 -0400)
Add a new function to write an integer to an ofnode (live tree or
flat tree).

Signed-off-by: Simon Glass <sjg@chromium.org>
drivers/core/ofnode.c
include/dm/ofnode.h
test/dm/ofnode.c

index b7a55589a1c6260ca38fb9576eae4ca26485fa36..45ea84e9fb84e3607bfa20b8a6f579bf418a8540 100644 (file)
@@ -1126,6 +1126,21 @@ int ofnode_write_string(ofnode node, const char *propname, const char *value)
        return ofnode_write_prop(node, propname, value, strlen(value) + 1);
 }
 
+int ofnode_write_u32(ofnode node, const char *propname, u32 value)
+{
+       fdt32_t *val;
+
+       assert(ofnode_valid(node));
+
+       log_debug("%s = %x", propname, value);
+       val = malloc(sizeof(*val));
+       if (!val)
+               return -ENOMEM;
+       *val = cpu_to_fdt32(value);
+
+       return ofnode_write_prop(node, propname, val, sizeof(value));
+}
+
 int ofnode_set_enabled(ofnode node, bool value)
 {
        assert(ofnode_valid(node));
index 16c8890b097757dfecd964a3add4567ad9d30b1e..7ce1e4c6d91e4cbc776678af7bd2627b0441e02d 100644 (file)
@@ -1154,6 +1154,16 @@ int ofnode_write_prop(ofnode node, const char *propname, const void *value,
  */
 int ofnode_write_string(ofnode node, const char *propname, const char *value);
 
+/**
+ * ofnode_write_u32() - Set an integer property of an ofnode
+ *
+ * @node:      The node for whose string property should be set
+ * @propname:  The name of the string property to set
+ * @value:     The new value of the 32-bit integer property
+ * Return: 0 if successful, -ve on error
+ */
+int ofnode_write_u32(ofnode node, const char *propname, u32 value);
+
 /**
  * ofnode_set_enabled() - Enable or disable a device tree node given by its
  *                       ofnode
index bd598d23e44f08011aee145d4b6874f155c2730e..f80993f89273c5f27e1953150f344b1c586ec525 100644 (file)
@@ -585,3 +585,19 @@ static int dm_test_ofnode_livetree_writing(struct unit_test_state *uts)
 }
 DM_TEST(dm_test_ofnode_livetree_writing,
        UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT | UT_TESTF_LIVE_OR_FLAT);
+
+static int dm_test_ofnode_u32(struct unit_test_state *uts)
+{
+       ofnode node;
+
+       node = ofnode_path("/lcd");
+       ut_assert(ofnode_valid(node));
+       ut_asserteq(1366, ofnode_read_u32_default(node, "xres", 123));
+       ut_assertok(ofnode_write_u32(node, "xres", 1367));
+       ut_asserteq(1367, ofnode_read_u32_default(node, "xres", 123));
+       ut_assertok(ofnode_write_u32(node, "xres", 1366));
+
+       return 0;
+}
+DM_TEST(dm_test_ofnode_u32,
+       UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT | UT_TESTF_LIVE_OR_FLAT);