diff options
Diffstat (limited to 'common/cmd_fdt.c')
| -rw-r--r-- | common/cmd_fdt.c | 14 | 
1 files changed, 13 insertions, 1 deletions
| diff --git a/common/cmd_fdt.c b/common/cmd_fdt.c index 94bca4646..8bc900aa7 100644 --- a/common/cmd_fdt.c +++ b/common/cmd_fdt.c @@ -50,6 +50,16 @@ static int fdt_print(const char *pathp, char *prop, int depth);   */  struct fdt_header *working_fdt; +void set_working_fdt_addr(void *addr) +{ +	char buf[17]; + +	working_fdt = addr; + +	sprintf(buf, "%lx", (unsigned long)addr); +	setenv("fdtaddr", buf); +} +  /*   * Flattened Device Tree command, see the help for parameter definitions.   */ @@ -64,6 +74,7 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])  	 * Set the address of the fdt  	 ********************************************************************/  	if (argv[1][0] == 'a') { +		unsigned long addr;  		/*  		 * Set the address [and length] of the fdt.  		 */ @@ -75,7 +86,8 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])  			return 0;  		} -		working_fdt = (struct fdt_header *)simple_strtoul(argv[2], NULL, 16); +		addr = simple_strtoul(argv[2], NULL, 16); +		set_working_fdt_addr((void *)addr);  		if (!fdt_valid()) {  			return 1; |