mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-09 03:21:51 +00:00
dm: core: Add a livetree function to check node status
Add a way to find out if a node is enabled or not, based on its 'status' property. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
734206dda1
commit
0de1b07406
3 changed files with 33 additions and 0 deletions
|
@ -226,6 +226,16 @@ int ofnode_read_u32_array(ofnode node, const char *propname,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ofnode_is_enabled(ofnode node)
|
||||||
|
{
|
||||||
|
if (ofnode_is_np(node)) {
|
||||||
|
return of_device_is_available(ofnode_to_np(node));
|
||||||
|
} else {
|
||||||
|
return fdtdec_get_is_enabled(gd->fdt_blob,
|
||||||
|
ofnode_to_offset(node));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ofnode ofnode_first_subnode(ofnode node)
|
ofnode ofnode_first_subnode(ofnode node)
|
||||||
{
|
{
|
||||||
assert(ofnode_valid(node));
|
assert(ofnode_valid(node));
|
||||||
|
|
|
@ -345,6 +345,17 @@ const char *ofnode_read_string(ofnode node, const char *propname);
|
||||||
*/
|
*/
|
||||||
int ofnode_read_u32_array(ofnode node, const char *propname,
|
int ofnode_read_u32_array(ofnode node, const char *propname,
|
||||||
u32 *out_values, size_t sz);
|
u32 *out_values, size_t sz);
|
||||||
|
/**
|
||||||
|
* ofnode_is_enabled() - Checks whether a node is enabled.
|
||||||
|
* This looks for a 'status' property. If this exists, then returns true if
|
||||||
|
* the status is 'okay' and false otherwise. If there is no status property,
|
||||||
|
* it returns true on the assumption that anything mentioned should be enabled
|
||||||
|
* by default.
|
||||||
|
*
|
||||||
|
* @node: node to examine
|
||||||
|
* @return false (not enabled) or true (enabled)
|
||||||
|
*/
|
||||||
|
bool ofnode_is_enabled(ofnode node);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ofnode_read_bool() - read a boolean value from a property
|
* ofnode_read_bool() - read a boolean value from a property
|
||||||
|
|
|
@ -249,3 +249,15 @@ static int dm_test_ofnode_get_child_count(struct unit_test_state *uts)
|
||||||
}
|
}
|
||||||
DM_TEST(dm_test_ofnode_get_child_count,
|
DM_TEST(dm_test_ofnode_get_child_count,
|
||||||
UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
|
UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
|
||||||
|
|
||||||
|
static int dm_test_ofnode_is_enabled(struct unit_test_state *uts)
|
||||||
|
{
|
||||||
|
ofnode root_node = ofnode_path("/");
|
||||||
|
ofnode node = ofnode_path("/usb@0");
|
||||||
|
|
||||||
|
ut_assert(ofnode_is_enabled(root_node));
|
||||||
|
ut_assert(!ofnode_is_enabled(node));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
DM_TEST(dm_test_ofnode_is_enabled, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue