On Sun, 10 Nov 2024 at 04:51, Christian Marangi <ansuels...@gmail.com> wrote: > > Implement oftree variant of parse_phandle OPs. > > There is currently a very hidden and laten BUG with parse_phandle OPs > that doesn't permit the support of multiple DTS in a system. One usage > example if sandbox with the usage of other.dts > > The BUG is only present on live scenario where of_... OPs are used and > it's not present when fdt... OPs are used. > > This is caused by an assumption made in __of_parse_phandle_with_args, > with the of_find_node_by_phandle call that pass the first arg as NULL. > > This makes of_find_node_by_phandle use the default root node of the > system and doesn't permit the usage of alternative tree. This is correct > for normal system and also for the linux kernel where it's assumed a > single device tree. > > It's problematic if other device tree needs to be used. > > To fix this, introduce __of_root_parse_phandle_with_args to define a > root device tree for of_find_node_by_phandle. > > Introduce all the variant OPs for this and in ofnode, the oftree OPs > following how it's done for other OPs with similar task. > > For FDT scenario, ofnode_from_fdtdec_phandle_args is reworked to accept > a new variable, node and noffset_to_ofnode is used instead of > offset_to_ofnode. This is required to support multiple FDB blob to > calculate the correct of_offset of the ofnode. > > Signed-off-by: Christian Marangi <ansuels...@gmail.com> > --- > drivers/core/of_access.c | 61 ++++++++++++++++++++-------- > drivers/core/ofnode.c | 51 ++++++++++++++++++++++-- > include/dm/of_access.h | 86 ++++++++++++++++++++++++++++++++++++++++ > include/dm/ofnode.h | 66 ++++++++++++++++++++++++++++++ > 4 files changed, 244 insertions(+), 20 deletions(-) >
Reviewed-by: Simon Glass <s...@chromium.org>