dm: update test on of_offset in ofnode_valid
authorPatrick Delaunay <patrick.delaunay@st.com>
Thu, 24 Sep 2020 15:26:20 +0000 (17:26 +0200)
committerSimon Glass <sjg@chromium.org>
Tue, 6 Oct 2020 15:07:54 +0000 (09:07 -0600)
Update the test for node.of_offset because an invalid offset is not
always set to -1 because the return value of the libfdt functions are:
+ an error with a value < 0
+ a valid offset with value >=0

For example, in ofnode_get_by_phandle() function, we have:
node.of_offset = fdt_node_offset_by_phandle(gd->fdt_blob, phandle);
and this function can return -FDT_ERR_BADPHANDLE (-6).

Without this patch, the added test dm_test_ofnode_get_by_phandle failed.

Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
include/dm/ofnode.h
test/dm/ofnode.c

index d7852da..98c64fe 100644 (file)
@@ -128,7 +128,7 @@ static inline bool ofnode_valid(ofnode node)
        if (of_live_active())
                return node.np != NULL;
        else
-               return node.of_offset != -1;
+               return node.of_offset >= 0;
 }
 
 /**
index 8bfb706..4ae8d28 100644 (file)
@@ -19,6 +19,22 @@ static int dm_test_ofnode_compatible(struct unit_test_state *uts)
 }
 DM_TEST(dm_test_ofnode_compatible, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
 
+static int dm_test_ofnode_get_by_phandle(struct unit_test_state *uts)
+{
+       /* test invalid phandle */
+       ut_assert(!ofnode_valid(ofnode_get_by_phandle(0)));
+       ut_assert(!ofnode_valid(ofnode_get_by_phandle(-1)));
+
+       /* test first valid phandle */
+       ut_assert(ofnode_valid(ofnode_get_by_phandle(1)));
+
+       /* test unknown phandle */
+       ut_assert(!ofnode_valid(ofnode_get_by_phandle(0x1000000)));
+
+       return 0;
+}
+DM_TEST(dm_test_ofnode_get_by_phandle, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
+
 static int dm_test_ofnode_by_prop_value(struct unit_test_state *uts)
 {
        const char propname[] = "compatible";