diff options
author | Patrick Delaunay <patrick.delaunay@st.com> | 2020-09-24 17:26:20 +0200 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2020-10-06 09:07:54 -0600 |
commit | 6d9949fe866751c527c5dafab5350af89b7b8332 (patch) | |
tree | 51b073975092d29df11ff9b60bf2bf9b5c244fc0 | |
parent | 45dbe75da6fbc3de280021bf4b5c9dfc94c70f8f (diff) | |
download | u-boot-6d9949fe866751c527c5dafab5350af89b7b8332.zip u-boot-6d9949fe866751c527c5dafab5350af89b7b8332.tar.gz u-boot-6d9949fe866751c527c5dafab5350af89b7b8332.tar.bz2 |
dm: update test on of_offset in ofnode_valid
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>
-rw-r--r-- | include/dm/ofnode.h | 2 | ||||
-rw-r--r-- | test/dm/ofnode.c | 16 |
2 files changed, 17 insertions, 1 deletions
diff --git a/include/dm/ofnode.h b/include/dm/ofnode.h index d7852da..98c64fe 100644 --- a/include/dm/ofnode.h +++ b/include/dm/ofnode.h @@ -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; } /** diff --git a/test/dm/ofnode.c b/test/dm/ofnode.c index 8bfb706..4ae8d28 100644 --- a/test/dm/ofnode.c +++ b/test/dm/ofnode.c @@ -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"; |