[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()?
>> 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. 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.
> 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