Removed some nonused fdt functions and moved fdt_find_and_setprop out of libfdt
Removed: fdt_node_is_compatible fdt_find_node_by_type fdt_find_compatible_node To ease merge of newer libfdt as we aren't using them anywhere at this time. Also moved fdt_find_and_setprop out of libfdt into fdt_support.c for the same reason. Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
This commit is contained in:
parent
ed1353d74b
commit
a3c2933e02
@ -44,6 +44,32 @@ struct fdt_header *fdt;
|
||||
|
||||
/********************************************************************/
|
||||
|
||||
/**
|
||||
* fdt_find_and_setprop: Find a node and set it's property
|
||||
*
|
||||
* @fdt: ptr to device tree
|
||||
* @node: path of node
|
||||
* @prop: property name
|
||||
* @val: ptr to new value
|
||||
* @len: length of new property value
|
||||
* @create: flag to create the property if it doesn't exist
|
||||
*
|
||||
* Convenience function to directly set a property given the path to the node.
|
||||
*/
|
||||
int fdt_find_and_setprop(void *fdt, const char *node, const char *prop,
|
||||
const void *val, int len, int create)
|
||||
{
|
||||
int nodeoff = fdt_find_node_by_path(fdt, node);
|
||||
|
||||
if (nodeoff < 0)
|
||||
return nodeoff;
|
||||
|
||||
if ((!create) && (fdt_get_property(fdt, nodeoff, prop, 0) == NULL))
|
||||
return 0; /* create flag not set; so exit quietly */
|
||||
|
||||
return fdt_setprop(fdt, nodeoff, prop, val, len);
|
||||
}
|
||||
|
||||
int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force)
|
||||
{
|
||||
int nodeoffset;
|
||||
|
@ -78,12 +78,6 @@ int fdt_subnode_offset_namelen(const void *fdt, int parentoffset,
|
||||
int fdt_subnode_offset(const void *fdt, int parentoffset, const char *name);
|
||||
|
||||
int fdt_find_node_by_path(const void *fdt, const char *path);
|
||||
int fdt_find_node_by_type(const void *fdt, int nodeoffset, const char *type);
|
||||
|
||||
int fdt_node_is_compatible(const void *fdt, int nodeoffset,
|
||||
const char *compat);
|
||||
int fdt_find_compatible_node(const void *fdt, int nodeoffset,
|
||||
const char *type, const char *compat);
|
||||
|
||||
struct fdt_property *fdt_get_property(const void *fdt, int nodeoffset,
|
||||
const char *name, int *lenp);
|
||||
|
112
libfdt/fdt_ro.c
112
libfdt/fdt_ro.c
@ -82,118 +82,6 @@ char *fdt_string(const void *fdt, int stroffset)
|
||||
return (char *)fdt + fdt_off_dt_strings(fdt) + stroffset;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check if the specified node is compatible by comparing the tokens
|
||||
* in its "compatible" property with the specified string:
|
||||
*
|
||||
* nodeoffset - starting place of the node
|
||||
* compat - the string to match to one of the tokens in the
|
||||
* "compatible" list.
|
||||
*/
|
||||
int fdt_node_is_compatible(const void *fdt, int nodeoffset,
|
||||
const char *compat)
|
||||
{
|
||||
const char* cp;
|
||||
int cplen, len;
|
||||
|
||||
cp = fdt_getprop(fdt, nodeoffset, "compatible", &cplen);
|
||||
if (cp == NULL)
|
||||
return 0;
|
||||
while (cplen > 0) {
|
||||
if (strncmp(cp, compat, strlen(compat)) == 0)
|
||||
return 1;
|
||||
len = strlen(cp) + 1;
|
||||
cp += len;
|
||||
cplen -= len;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Find a node by its device type property. On success, the offset of that
|
||||
* node is returned or an error code otherwise:
|
||||
*
|
||||
* nodeoffset - the node to start searching from or 0, the node you pass
|
||||
* will not be searched, only the next one will; typically,
|
||||
* you pass 0 to start the search and then what the previous
|
||||
* call returned.
|
||||
* type - the device type string to match against.
|
||||
*/
|
||||
int fdt_find_node_by_type(const void *fdt, int nodeoffset, const char *type)
|
||||
{
|
||||
int offset, nextoffset;
|
||||
struct fdt_property *prop;
|
||||
uint32_t tag;
|
||||
int len, ret;
|
||||
|
||||
CHECK_HEADER(fdt);
|
||||
|
||||
tag = fdt_next_tag(fdt, nodeoffset, &nextoffset, NULL);
|
||||
if (tag != FDT_BEGIN_NODE)
|
||||
return -FDT_ERR_BADOFFSET;
|
||||
if (nodeoffset)
|
||||
nodeoffset = 0; /* start searching with next node */
|
||||
|
||||
while (1) {
|
||||
offset = nextoffset;
|
||||
tag = fdt_next_tag(fdt, offset, &nextoffset, NULL);
|
||||
|
||||
switch (tag) {
|
||||
case FDT_BEGIN_NODE:
|
||||
nodeoffset = offset;
|
||||
break;
|
||||
|
||||
case FDT_PROP:
|
||||
if (nodeoffset == 0)
|
||||
break;
|
||||
ret = prop_name_eq(fdt, offset, "device_type",
|
||||
&prop, &len);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
else if (ret > 0 &&
|
||||
strncmp(prop->data, type, len - 1) == 0)
|
||||
return nodeoffset;
|
||||
break;
|
||||
|
||||
case FDT_END_NODE:
|
||||
case FDT_NOP:
|
||||
break;
|
||||
|
||||
case FDT_END:
|
||||
return -FDT_ERR_NOTFOUND;
|
||||
|
||||
default:
|
||||
return -FDT_ERR_BADSTRUCTURE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Find a node based on its device type and one of the tokens in its its
|
||||
* "compatible" property. On success, the offset of that node is returned
|
||||
* or an error code otherwise:
|
||||
*
|
||||
* nodeoffset - the node to start searching from or 0, the node you pass
|
||||
* will not be searched, only the next one will; typically,
|
||||
* you pass 0 to start the search and then what the previous
|
||||
* call returned.
|
||||
* type - the device type string to match against.
|
||||
* compat - the string to match to one of the tokens in the
|
||||
* "compatible" list.
|
||||
*/
|
||||
int fdt_find_compatible_node(const void *fdt, int nodeoffset,
|
||||
const char *type, const char *compat)
|
||||
{
|
||||
int offset;
|
||||
|
||||
offset = fdt_find_node_by_type(fdt, nodeoffset, type);
|
||||
if (offset < 0 || fdt_node_is_compatible(fdt, offset, compat))
|
||||
return offset;
|
||||
|
||||
return -FDT_ERR_NOTFOUND;
|
||||
}
|
||||
|
||||
/*
|
||||
* Return the node offset of the node specified by:
|
||||
* parentoffset - starting place (0 to start at the root)
|
||||
|
@ -185,32 +185,6 @@ int fdt_setprop(void *fdt, int nodeoffset, const char *name,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* fdt_find_and_setprop: Find a node and set it's property
|
||||
*
|
||||
* @fdt: ptr to device tree
|
||||
* @node: path of node
|
||||
* @prop: property name
|
||||
* @val: ptr to new value
|
||||
* @len: length of new property value
|
||||
* @create: flag to create the property if it doesn't exist
|
||||
*
|
||||
* Convenience function to directly set a property given the path to the node.
|
||||
*/
|
||||
int fdt_find_and_setprop(void *fdt, const char *node, const char *prop,
|
||||
const void *val, int len, int create)
|
||||
{
|
||||
int nodeoff = fdt_find_node_by_path(fdt, node);
|
||||
|
||||
if (nodeoff < 0)
|
||||
return nodeoff;
|
||||
|
||||
if ((!create) && (fdt_get_property(fdt, nodeoff, prop, 0) == NULL))
|
||||
return 0; /* create flag not set; so exit quietly */
|
||||
|
||||
return fdt_setprop(fdt, nodeoff, prop, val, len);
|
||||
}
|
||||
|
||||
int fdt_delprop(void *fdt, int nodeoffset, const char *name)
|
||||
{
|
||||
struct fdt_property *prop;
|
||||
|
Loading…
Reference in New Issue
Block a user