@ -1182,14 +1182,11 @@ int fdt_node_offset_by_compat_reg(void *blob, const char *compat,
*/
int fdt_alloc_phandle ( void * blob )
{
int offset , len , phandle = 0 ;
const u32 * val ;
int offset , phandle = 0 ;
for ( offset = fdt_next_node ( blob , - 1 , NULL ) ; offset > = 0 ;
offset = fdt_next_node ( blob , offset , NULL ) ) {
val = fdt_getprop ( blob , offset , " linux,phandle " , & len ) ;
if ( val )
phandle = max ( * val , phandle ) ;
phandle = max ( phandle , fdt_get_phandle ( blob , offset ) ) ;
}
return phandle + 1 ;
@ -1241,15 +1238,22 @@ int fdt_set_phandle(void *fdt, int nodeoffset, uint32_t phandle)
* @ fdt : ptr to device tree
* @ nodeoffset : node to update
*/
int fdt_create_phandle ( void * fdt , int nodeoffset )
unsigned int fdt_create_phandle ( void * fdt , int nodeoffset )
{
/* see if there is a phandle already */
int phandle = fdt_get_phandle ( fdt , nodeoffset ) ;
/* if we got 0, means no phandle so create one */
if ( phandle = = 0 ) {
int ret ;
phandle = fdt_alloc_phandle ( fdt ) ;
fdt_set_phandle ( fdt , nodeoffset , phandle ) ;
ret = fdt_set_phandle ( fdt , nodeoffset , phandle ) ;
if ( ret < 0 ) {
printf ( " Can't set phandle %u: %s \n " , phandle ,
fdt_strerror ( ret ) ) ;
return 0 ;
}
}
return phandle ;