
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@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).
Thanks, gvb