mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-19 13:41:31 +00:00
For fdt_find_node_by_path(), handle the root path properly.
Also removes the special case root path detection in cmd_fdt.c since it is no longer necessary. Signed-off-by: Gerald Van Baren <vanbaren@cideas.com>
This commit is contained in:
parent
9675ee7208
commit
06e19a0770
2 changed files with 16 additions and 23 deletions
|
@ -52,25 +52,6 @@ static int fdt_parse_prop(char *pathp, char *prop, char *newval,
|
||||||
char *data, int *len);
|
char *data, int *len);
|
||||||
static int fdt_print(char *pathp, char *prop, int depth);
|
static int fdt_print(char *pathp, char *prop, int depth);
|
||||||
|
|
||||||
static int findnodeoffset(const char *pathp)
|
|
||||||
{
|
|
||||||
int nodeoffset;
|
|
||||||
|
|
||||||
if (strcmp(pathp, "/") == 0) {
|
|
||||||
nodeoffset = 0;
|
|
||||||
} else {
|
|
||||||
nodeoffset = fdt_find_node_by_path (fdt, pathp);
|
|
||||||
if (nodeoffset < 0) {
|
|
||||||
/*
|
|
||||||
* Not found or something else bad happened.
|
|
||||||
*/
|
|
||||||
printf ("findnodeoffset() libfdt: %s\n",
|
|
||||||
fdt_strerror(nodeoffset));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nodeoffset;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Flattened Device Tree command, see the help for parameter definitions.
|
* Flattened Device Tree command, see the help for parameter definitions.
|
||||||
*/
|
*/
|
||||||
|
@ -187,11 +168,13 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
|
||||||
pathp = argv[2];
|
pathp = argv[2];
|
||||||
nodep = argv[3];
|
nodep = argv[3];
|
||||||
|
|
||||||
nodeoffset = findnodeoffset(pathp);
|
nodeoffset = fdt_find_node_by_path (fdt, pathp);
|
||||||
if (nodeoffset < 0) {
|
if (nodeoffset < 0) {
|
||||||
/*
|
/*
|
||||||
* Not found or something else bad happened.
|
* Not found or something else bad happened.
|
||||||
*/
|
*/
|
||||||
|
printf ("libfdt fdt_find_node_by_path() returned %s\n",
|
||||||
|
fdt_strerror(nodeoffset));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
err = fdt_add_subnode(fdt, nodeoffset, nodep);
|
err = fdt_add_subnode(fdt, nodeoffset, nodep);
|
||||||
|
@ -225,11 +208,13 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
|
||||||
prop = argv[3];
|
prop = argv[3];
|
||||||
newval = argv[4];
|
newval = argv[4];
|
||||||
|
|
||||||
nodeoffset = findnodeoffset(pathp);
|
nodeoffset = fdt_find_node_by_path (fdt, pathp);
|
||||||
if (nodeoffset < 0) {
|
if (nodeoffset < 0) {
|
||||||
/*
|
/*
|
||||||
* Not found or something else bad happened.
|
* Not found or something else bad happened.
|
||||||
*/
|
*/
|
||||||
|
printf ("libfdt fdt_find_node_by_path() returned %s\n",
|
||||||
|
fdt_strerror(nodeoffset));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
ret = fdt_parse_prop(pathp, prop, newval, data, &len);
|
ret = fdt_parse_prop(pathp, prop, newval, data, &len);
|
||||||
|
@ -283,11 +268,13 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
|
||||||
* Get the path. The root node is an oddball, the offset
|
* Get the path. The root node is an oddball, the offset
|
||||||
* is zero and has no name.
|
* is zero and has no name.
|
||||||
*/
|
*/
|
||||||
nodeoffset = findnodeoffset(argv[2]);
|
nodeoffset = fdt_find_node_by_path (fdt, argv[2]);
|
||||||
if (nodeoffset < 0) {
|
if (nodeoffset < 0) {
|
||||||
/*
|
/*
|
||||||
* Not found or something else bad happened.
|
* Not found or something else bad happened.
|
||||||
*/
|
*/
|
||||||
|
printf ("libfdt fdt_find_node_by_path() returned %s\n",
|
||||||
|
fdt_strerror(nodeoffset));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
@ -584,11 +571,13 @@ static int fdt_print(char *pathp, char *prop, int depth)
|
||||||
int len; /* length of the property */
|
int len; /* length of the property */
|
||||||
int level = 0; /* keep track of nesting level */
|
int level = 0; /* keep track of nesting level */
|
||||||
|
|
||||||
nodeoffset = findnodeoffset(pathp);
|
nodeoffset = fdt_find_node_by_path (fdt, pathp);
|
||||||
if (nodeoffset < 0) {
|
if (nodeoffset < 0) {
|
||||||
/*
|
/*
|
||||||
* Not found or something else bad happened.
|
* Not found or something else bad happened.
|
||||||
*/
|
*/
|
||||||
|
printf ("libfdt fdt_find_node_by_path() returned %s\n",
|
||||||
|
fdt_strerror(nodeoffset));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -283,6 +283,10 @@ int fdt_find_node_by_path(const void *fdt, const char *path)
|
||||||
if (*path != '/')
|
if (*path != '/')
|
||||||
return -FDT_ERR_BADPATH;
|
return -FDT_ERR_BADPATH;
|
||||||
|
|
||||||
|
/* Handle the root path: root offset is 0 */
|
||||||
|
if (strcmp(path, "/") == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
while (*p) {
|
while (*p) {
|
||||||
const char *q;
|
const char *q;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue