@ -128,24 +128,32 @@ static int fdt_qportal(void *blob, int off, int id, char *name,
childoff = fdt_subnode_offset ( blob , off , name ) ;
if ( create ) {
if ( childoff < = 0 )
childoff = fdt_add_subnode ( blob , off , name ) ;
char handle [ 64 ] , * p ;
if ( childoff > 0 ) {
char handle [ 64 ] , * p ;
strncpy ( handle , name , sizeof ( handle ) ) ;
p = strchr ( handle , ' @ ' ) ;
if ( ! strncmp ( name , " fman " , 4 ) ) {
* p = * ( p + 1 ) ;
p + + ;
}
* p = ' \0 ' ;
strncpy ( handle , name , sizeof ( handle ) ) ;
p = strchr ( handle , ' @ ' ) ;
if ( ! strncmp ( name , " fman " , 4 ) ) {
* p = * ( p + 1 ) ;
p + + ;
}
* p = ' \0 ' ;
dev_off = fdt_path_offset ( blob , handle ) ;
/* skip this node if alias is not found */
if ( dev_off = = - FDT_ERR_BADPATH )
return 0 ;
if ( dev_off < 0 )
return dev_off ;
dev_off = fdt_path_offset ( blob , handle ) ;
if ( dev_off < 0 )
return dev_off ;
if ( childoff < = 0 )
childoff = fdt_add_subnode ( blob , off , name ) ;
/* need to update the dev_off after adding a subnode */
dev_off = fdt_path_offset ( blob , handle ) ;
if ( dev_off < 0 )
return dev_off ;
if ( childoff > 0 ) {
dev_handle = fdt_get_phandle ( blob , dev_off ) ;
if ( dev_handle < = 0 ) {
dev_handle = fdt_alloc_phandle ( blob ) ;