104ca8714SMasahiro Yamada // SPDX-License-Identifier: GPL-2.0+
204ca8714SMasahiro Yamada
304ca8714SMasahiro Yamada #include <common.h>
404ca8714SMasahiro Yamada #include <dm.h>
5*e6c5c94aSSimon Glass #include <dm/of_extra.h>
604ca8714SMasahiro Yamada #include <dm/test.h>
704ca8714SMasahiro Yamada #include <test/ut.h>
804ca8714SMasahiro Yamada
dm_test_ofnode_compatible(struct unit_test_state * uts)904ca8714SMasahiro Yamada static int dm_test_ofnode_compatible(struct unit_test_state *uts)
1004ca8714SMasahiro Yamada {
1104ca8714SMasahiro Yamada ofnode root_node = ofnode_path("/");
1204ca8714SMasahiro Yamada
1304ca8714SMasahiro Yamada ut_assert(ofnode_valid(root_node));
1404ca8714SMasahiro Yamada ut_assert(ofnode_device_is_compatible(root_node, "sandbox"));
1504ca8714SMasahiro Yamada
1604ca8714SMasahiro Yamada return 0;
1704ca8714SMasahiro Yamada }
1804ca8714SMasahiro Yamada DM_TEST(dm_test_ofnode_compatible, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
199bc7e96aSJens Wiklander
dm_test_ofnode_by_prop_value(struct unit_test_state * uts)209bc7e96aSJens Wiklander static int dm_test_ofnode_by_prop_value(struct unit_test_state *uts)
219bc7e96aSJens Wiklander {
229bc7e96aSJens Wiklander const char propname[] = "compatible";
239bc7e96aSJens Wiklander const char propval[] = "denx,u-boot-fdt-test";
249bc7e96aSJens Wiklander const char *str;
259bc7e96aSJens Wiklander ofnode node = ofnode_null();
269bc7e96aSJens Wiklander
279bc7e96aSJens Wiklander /* Find first matching node, there should be at least one */
289bc7e96aSJens Wiklander node = ofnode_by_prop_value(node, propname, propval, sizeof(propval));
299bc7e96aSJens Wiklander ut_assert(ofnode_valid(node));
309bc7e96aSJens Wiklander str = ofnode_read_string(node, propname);
319bc7e96aSJens Wiklander ut_assert(str && !strcmp(str, propval));
329bc7e96aSJens Wiklander
339bc7e96aSJens Wiklander /* Find the rest of the matching nodes */
349bc7e96aSJens Wiklander while (true) {
359bc7e96aSJens Wiklander node = ofnode_by_prop_value(node, propname, propval,
369bc7e96aSJens Wiklander sizeof(propval));
379bc7e96aSJens Wiklander if (!ofnode_valid(node))
389bc7e96aSJens Wiklander break;
399bc7e96aSJens Wiklander str = ofnode_read_string(node, propname);
409bc7e96aSJens Wiklander ut_assert(str && !strcmp(str, propval));
419bc7e96aSJens Wiklander }
429bc7e96aSJens Wiklander
439bc7e96aSJens Wiklander return 0;
449bc7e96aSJens Wiklander }
459bc7e96aSJens Wiklander DM_TEST(dm_test_ofnode_by_prop_value, DM_TESTF_SCAN_FDT);
46*e6c5c94aSSimon Glass
dm_test_ofnode_fmap(struct unit_test_state * uts)47*e6c5c94aSSimon Glass static int dm_test_ofnode_fmap(struct unit_test_state *uts)
48*e6c5c94aSSimon Glass {
49*e6c5c94aSSimon Glass struct fmap_entry entry;
50*e6c5c94aSSimon Glass ofnode node;
51*e6c5c94aSSimon Glass
52*e6c5c94aSSimon Glass node = ofnode_path("/cros-ec/flash");
53*e6c5c94aSSimon Glass ut_assert(ofnode_valid(node));
54*e6c5c94aSSimon Glass ut_assertok(ofnode_read_fmap_entry(node, &entry));
55*e6c5c94aSSimon Glass ut_asserteq(0x08000000, entry.offset);
56*e6c5c94aSSimon Glass ut_asserteq(0x20000, entry.length);
57*e6c5c94aSSimon Glass
58*e6c5c94aSSimon Glass return 0;
59*e6c5c94aSSimon Glass }
60*e6c5c94aSSimon Glass DM_TEST(dm_test_ofnode_fmap, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
61