dm: core: Add support for getting node from aliases
Add support for getting a node/property from aliases. The similar functionality is provided for chosen node and this implemenatation is copy of it. Signed-off-by: Michal Simek <michal.simek@xilinx.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
c94b44c64b
commit
305d31885f
@ -476,6 +476,28 @@ ofnode ofnode_get_chosen_node(const char *name)
|
||||
return ofnode_path(prop);
|
||||
}
|
||||
|
||||
const void *ofnode_read_aliases_prop(const char *propname, int *sizep)
|
||||
{
|
||||
ofnode node;
|
||||
|
||||
node = ofnode_path("/aliases");
|
||||
|
||||
return ofnode_read_prop(node, propname, sizep);
|
||||
}
|
||||
|
||||
ofnode ofnode_get_aliases_node(const char *name)
|
||||
{
|
||||
const char *prop;
|
||||
|
||||
prop = ofnode_read_aliases_prop(name, NULL);
|
||||
if (!prop)
|
||||
return ofnode_null();
|
||||
|
||||
debug("%s: node_path: %s\n", __func__, prop);
|
||||
|
||||
return ofnode_path(prop);
|
||||
}
|
||||
|
||||
int ofnode_get_child_count(ofnode parent)
|
||||
{
|
||||
ofnode child;
|
||||
|
@ -605,6 +605,28 @@ const char *ofnode_read_chosen_string(const char *propname);
|
||||
*/
|
||||
ofnode ofnode_get_chosen_node(const char *propname);
|
||||
|
||||
/**
|
||||
* ofnode_read_aliases_prop() - get the value of a aliases property
|
||||
*
|
||||
* This looks for a property within the /aliases node and returns its value
|
||||
*
|
||||
* @propname: Property name to look for
|
||||
* @sizep: Returns size of property, or FDT_ERR_... error code if function
|
||||
* returns NULL
|
||||
* @return property value if found, else NULL
|
||||
*/
|
||||
const void *ofnode_read_aliases_prop(const char *propname, int *sizep);
|
||||
|
||||
/**
|
||||
* ofnode_get_aliases_node() - get a referenced node from the aliases node
|
||||
*
|
||||
* This looks up a named property in the aliases node and uses that as a path to
|
||||
* look up a code.
|
||||
*
|
||||
* @return the referenced node if present, else ofnode_null()
|
||||
*/
|
||||
ofnode ofnode_get_aliases_node(const char *propname);
|
||||
|
||||
struct display_timing;
|
||||
/**
|
||||
* ofnode_decode_display_timing() - decode display timings
|
||||
|
@ -207,6 +207,28 @@ static int dm_test_ofnode_read_chosen(struct unit_test_state *uts)
|
||||
}
|
||||
DM_TEST(dm_test_ofnode_read_chosen, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
|
||||
|
||||
static int dm_test_ofnode_read_aliases(struct unit_test_state *uts)
|
||||
{
|
||||
const void *val;
|
||||
ofnode node;
|
||||
int size;
|
||||
|
||||
node = ofnode_get_aliases_node("eth3");
|
||||
ut_assert(ofnode_valid(node));
|
||||
ut_asserteq_str("sbe5", ofnode_get_name(node));
|
||||
|
||||
node = ofnode_get_aliases_node("unknown");
|
||||
ut_assert(!ofnode_valid(node));
|
||||
|
||||
val = ofnode_read_aliases_prop("spi0", &size);
|
||||
ut_assertnonnull(val);
|
||||
ut_asserteq(7, size);
|
||||
ut_asserteq_str("/spi@0", (const char *)val);
|
||||
|
||||
return 0;
|
||||
}
|
||||
DM_TEST(dm_test_ofnode_read_aliases, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
|
||||
|
||||
static int dm_test_ofnode_get_child_count(struct unit_test_state *uts)
|
||||
{
|
||||
ofnode node, child_node;
|
||||
|
Loading…
Reference in New Issue
Block a user