[U-Boot-Users] fdt_find_compatible_node() and friends

Jerry Van Baren gvb.uboot at gmail.com
Thu May 17 12:38:32 CEST 2007

Wolfgang Grandegger wrote:
> Hi Jerry,
> Jerry Van Baren wrote:
>> Wolfgang Grandegger wrote:
>>> Hi Jerry,
>>> before re-coding fdt_find_compatible_node(), some more comments.
>>> After browsing more carefully the FDT related code of "arch/powerpc"
>>> I think we also need, apart from fdt_find_compatible_node() and
>>> fdt_path_offset(), fdt_find_node_by_type() and maybe 
>>> fdt_find_node_by_name(). These functions do a sequential scan of all 
>>> devices starting at the beginning or after a specified node. They 
>>> actually ignore the hierarchy. Do you agree?
>>> BTW: any reason why not using the more compatible name 
>>> fdt_find_node_by_path() for fdt_path_offset()?
>>> Wolfgang.
>> Hi WolfganG,
>> I'm not an expert, I just fake it on email ;-).  With that disclaimer, 
>> I would agree with you WRT all the "find" functions.  The original 
>> libfdt code does not support any "find" functions, so we will need to 
>> add them.
>> WRT to fdt_find_node_by_path() vs. fdt_path_offset(), I vaguely recall 
>> some renames happening in the kernel source, but I cannot find them so 
>> my memory likely is faulty[1].  I would be strongly in favor of 
>> following the kernel's lead and renaming that function since we are 
>> already divergent from the original libfdt.  The kernel's name is a 
>> much better description.
> OK, I have attached two new patches replacing fdt_path_offset() with 
> fdt_find_node_by_path() and implementing fdt_find_node_by_type() and 
> fdt_find_compatible_node(). This version does not use static variables 
> any more to scan the nodes without re-scanning, but looks for the end 
> tag. I think it's (almost) good enough to be applied.
> Wolfgang.
> ------------------------------------------------------------------------
> Replace fdt_node_offset() with fdt_find_node_by_path().
> From: Wolfgang Grandegger <wg at grandegger.com>
> The new name matches more closely the kernel's name, which is also
> a much better description.
> ---
>  board/mpc8360emds/mpc8360emds.c |    2 +-
>  board/mpc8360emds/pci.c         |    2 +-
>  common/cmd_fdt.c                |    6 +++---
>  common/fdt_support.c            |   10 +++++-----
>  cpu/mpc83xx/cpu.c               |    2 +-
>  include/libfdt.h                |    2 +-
>  libfdt/fdt_ro.c                 |    2 +-
>  7 files changed, 13 insertions(+), 13 deletions(-)

Hi Wolfgang G,

I've applied your patches to my local (working) repository and will push 
the changes tonight (my tonight, your tomorrow ;-).  I created a 
subroutine out of three snippets of code in cmd_fdt.c which your 
fdt_find_node_by_path() change  fixed up so I had to fix one line in the 
new subroutine by hand.  Not bad at all considering the changes I made 
in that file.

Your patches have a From: line rather than a Signed-off-by: line, I 
presume it is OK (and desirable) for me to change it into a 
Signed-off-by: line (I'll add my own Acked-by: line).


More information about the U-Boot mailing list