Hello Gedare, On Fri, Feb 5, 2021 at 11:53 PM Gedare Bloom <ged...@rtems.org> wrote:
> > > On Fri, Feb 5, 2021 at 10:41 AM G S Niteesh Babu <niteesh...@gmail.com> > wrote: > >> Refactored recursive rtems_ofw_get_effective_phandle into a >> iterative function. >> --- >> bsps/shared/ofw/ofw.c | 9 +++++---- >> 1 file changed, 5 insertions(+), 4 deletions(-) >> >> diff --git a/bsps/shared/ofw/ofw.c b/bsps/shared/ofw/ofw.c >> index 9dec310247..e3626747fa 100644 >> --- a/bsps/shared/ofw/ofw.c >> +++ b/bsps/shared/ofw/ofw.c >> @@ -509,11 +509,12 @@ static phandle_t rtems_ofw_get_effective_phandle( >> { >> phandle_t child; >> phandle_t ref; >> + int node_offset; >> >> - for (child = rtems_ofw_child(node); child != 0; child = >> rtems_ofw_peer(child)) { >> - ref = rtems_ofw_get_effective_phandle(child, xref); >> - if (ref != -1) >> - return ref; >> + node_offset = fdt_path_offset(fdtp, "/"); >> + >> + while ((node_offset = fdt_next_node(fdtp, node_offset, NULL)) > 0) { >> + child = rtems_fdt_offset_to_phandle(node_offset); >> >> Assuming this works, it is much better now :) Thanks. > Yes, it does. I checked it by creating a small test outside of RTEMS using real DTB files (Rpi.dtb and Beagle.dtb). I basically mmap the dtb file and initialize fdtp with the mapped address, and use this with libFDT and ofw.c to test and debug. This creates a much easier env to work with. Finally, when satisfied with the results I test them on real hardware. Thanks, Niteesh. > >> if (rtems_ofw_get_enc_prop(child, "phandle", &ref, sizeof(ref)) == >> -1 && >> rtems_ofw_get_enc_prop(child, "ibm,phandle", &ref, sizeof(ref)) >> == -1 && >> -- >> 2.17.1 >> >>
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel