@ -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 ;