aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2021-10-23 17:26:07 -0600
committerSimon Glass <sjg@chromium.org>2021-11-28 16:51:51 -0700
commit075bfc9575aedca15e61f5f1cfa300409e2979fe (patch)
treef75d1acaafdef7a48bd225151a361bd25fdb021e /test
parent32c6a8e1f803e2a42fa7bf76f23231736841bfc0 (diff)
downloadu-boot-075bfc9575aedca15e61f5f1cfa300409e2979fe.zip
u-boot-075bfc9575aedca15e61f5f1cfa300409e2979fe.tar.gz
u-boot-075bfc9575aedca15e61f5f1cfa300409e2979fe.tar.bz2
dm: core: Add a way to obtain a string list
At present we support reading a string list a string at a time. Apart from being inefficient, this makes it impossible to separate reading of the devicetree into the of_to_plat() method where it belongs, since any code which needs access to the string must read it from the devicetree. Add a function which returns the string property as an array of pointers to the strings, which is easily used by clients. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'test')
-rw-r--r--test/dm/ofnode.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/dm/ofnode.c b/test/dm/ofnode.c
index c72e082..5e7c968 100644
--- a/test/dm/ofnode.c
+++ b/test/dm/ofnode.c
@@ -354,6 +354,7 @@ DM_TEST(dm_test_ofnode_for_each_compatible_node, UT_TESTF_SCAN_FDT);
static int dm_test_ofnode_string(struct unit_test_state *uts)
{
+ const char **val;
const char *out;
ofnode node;
@@ -366,6 +367,10 @@ static int dm_test_ofnode_string(struct unit_test_state *uts)
ut_asserteq_str("test string", out);
ut_asserteq(0, ofnode_stringlist_search(node, "str-value",
"test string"));
+ ut_asserteq(1, ofnode_read_string_list(node, "str-value", &val));
+ ut_asserteq_str("test string", val[0]);
+ ut_assertnull(val[1]);
+ free(val);
/* list of strings */
ut_asserteq(5, ofnode_read_string_count(node, "mux-control-names"));
@@ -374,6 +379,15 @@ static int dm_test_ofnode_string(struct unit_test_state *uts)
ut_asserteq_str("mux0", out);
ut_asserteq(0, ofnode_stringlist_search(node, "mux-control-names",
"mux0"));
+ ut_asserteq(5, ofnode_read_string_list(node, "mux-control-names",
+ &val));
+ ut_asserteq_str("mux0", val[0]);
+ ut_asserteq_str("mux1", val[1]);
+ ut_asserteq_str("mux2", val[2]);
+ ut_asserteq_str("mux3", val[3]);
+ ut_asserteq_str("mux4", val[4]);
+ ut_assertnull(val[5]);
+ free(val);
ut_assertok(ofnode_read_string_index(node, "mux-control-names", 4,
&out));
@@ -387,6 +401,7 @@ DM_TEST(dm_test_ofnode_string, 0);
static int dm_test_ofnode_string_err(struct unit_test_state *uts)
{
+ const char **val;
const char *out;
ofnode node;
@@ -401,16 +416,21 @@ static int dm_test_ofnode_string_err(struct unit_test_state *uts)
ut_asserteq(-EINVAL, ofnode_read_string_count(node, "missing"));
ut_asserteq(-EINVAL, ofnode_read_string_index(node, "missing", 0,
&out));
+ ut_asserteq(-EINVAL, ofnode_read_string_list(node, "missing", &val));
/* empty property */
ut_asserteq(-ENODATA, ofnode_read_string_count(node, "bool-value"));
ut_asserteq(-ENODATA, ofnode_read_string_index(node, "bool-value", 0,
&out));
+ ut_asserteq(-ENODATA, ofnode_read_string_list(node, "bool-value",
+ &val));
/* badly formatted string list */
ut_asserteq(-EILSEQ, ofnode_read_string_count(node, "int64-value"));
ut_asserteq(-EILSEQ, ofnode_read_string_index(node, "int64-value", 0,
&out));
+ ut_asserteq(-EILSEQ, ofnode_read_string_list(node, "int64-value",
+ &val));
/* out of range / not found */
ut_asserteq(-ENODATA, ofnode_read_string_index(node, "str-value", 1,