diff options
| author | Gerald Van Baren <vanbaren@cideas.com> | 2007-05-21 23:27:16 -0400 | 
|---|---|---|
| committer | Gerald Van Baren <vanbaren@cideas.com> | 2007-08-10 19:21:36 -0400 | 
| commit | 06e19a07701c968f15d72c083b5872a1a11c7b01 (patch) | |
| tree | e2a263a8a1e2002fc0353fa446f4aee746e43cf0 | |
| parent | 9675ee7208ab965d13ea8d8262d77ac4160ef549 (diff) | |
| download | olio-uboot-2014.01-06e19a07701c968f15d72c083b5872a1a11c7b01.tar.xz olio-uboot-2014.01-06e19a07701c968f15d72c083b5872a1a11c7b01.zip | |
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>
| -rw-r--r-- | common/cmd_fdt.c | 35 | ||||
| -rw-r--r-- | libfdt/fdt_ro.c | 4 | 
2 files changed, 16 insertions, 23 deletions
| diff --git a/common/cmd_fdt.c b/common/cmd_fdt.c index 65960c664..7669676f2 100644 --- a/common/cmd_fdt.c +++ b/common/cmd_fdt.c @@ -52,25 +52,6 @@ static int fdt_parse_prop(char *pathp, char *prop, char *newval,  	char *data, int *len);  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.   */ @@ -187,11 +168,13 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])  		pathp = argv[2];  		nodep = argv[3]; -		nodeoffset = findnodeoffset(pathp); +		nodeoffset = fdt_find_node_by_path (fdt, pathp);  		if (nodeoffset < 0) {  			/*  			 * Not found or something else bad happened.  			 */ +			printf ("libfdt fdt_find_node_by_path() returned %s\n", +				fdt_strerror(nodeoffset));  			return 1;  		}  		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];  		newval = argv[4]; -		nodeoffset = findnodeoffset(pathp); +		nodeoffset = fdt_find_node_by_path (fdt, pathp);  		if (nodeoffset < 0) {  			/*  			 * Not found or something else bad happened.  			 */ +			printf ("libfdt fdt_find_node_by_path() returned %s\n", +				fdt_strerror(nodeoffset));  			return 1;  		}  		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  		 * is zero and has no name.  		 */ -		nodeoffset = findnodeoffset(argv[2]); +		nodeoffset = fdt_find_node_by_path (fdt, argv[2]);  		if (nodeoffset < 0) {  			/*  			 * Not found or something else bad happened.  			 */ +			printf ("libfdt fdt_find_node_by_path() returned %s\n", +				fdt_strerror(nodeoffset));  			return 1;  		}  		/* @@ -584,11 +571,13 @@ static int fdt_print(char *pathp, char *prop, int depth)  	int  len;		/* length of the property */  	int  level = 0;		/* keep track of nesting level */ -	nodeoffset = findnodeoffset(pathp); +	nodeoffset = fdt_find_node_by_path (fdt, pathp);  	if (nodeoffset < 0) {  		/*  		 * Not found or something else bad happened.  		 */ +		printf ("libfdt fdt_find_node_by_path() returned %s\n", +			fdt_strerror(nodeoffset));  		return 1;  	}  	/* diff --git a/libfdt/fdt_ro.c b/libfdt/fdt_ro.c index 923c389ec..ffd9209b1 100644 --- a/libfdt/fdt_ro.c +++ b/libfdt/fdt_ro.c @@ -283,6 +283,10 @@ int fdt_find_node_by_path(const void *fdt, const char *path)  	if (*path != '/')  		return -FDT_ERR_BADPATH; +	/* Handle the root path: root offset is 0 */ +	if (strcmp(path, "/") == 0) +		return 0; +  	while (*p) {  		const char *q; |