Re: [RFC PATCH 40/77] dtc: Introduce dti_get_node_by_path()
David Gibson <[email protected]> Thu, 15 Jan 2026 17:47:29 +1100
| Newsgroups | org.kernel.vger.devicetree-spec,org.kernel.vger.devicetree-compiler,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <aWiNgZZ02-4jRc5l@zatzit> |
On Mon, Jan 12, 2026 at 03:19:30PM +0100, Herve Codina wrote: > The future introduction of orphan nodes for addons device-tree will lead > to more than one tree in the addons data. Those trees will be: > - the classical root tree starting at the root node > - trees related to orphan nodes This doesn't make sense to me. The new function still just takes a single path, nothing to specify which tree that path is looked up in. You can probably guarantee that labels and phandles are unique across all the trees. Not paths, though. > > Also, an addon device-tree can have only trees based on orphan nodes. In > other words an addon device-tree is valid without having the classical > 'root' tree. > > To prepare this change, introduce and use dti_get_node_by_path(). > > dti_get_node_by_path() retrieves a node by its path like > get_node_by_path() but it works at the struct dt_info level. > > It handles the case where a 'root' device-tree is not present and will > handle orphan nodes trees as soon as they will be introduced. > > This introduction doesn't lead to any functional changes. > > Signed-off-by: Herve Codina <[email protected]> > --- > checks.c | 2 +- > dtc.h | 3 ++- > livetree.c | 15 ++++++++++++++- > 3 files changed, 17 insertions(+), 3 deletions(-) > > diff --git a/checks.c b/checks.c > index 9744431..b2b1bf7 100644 > --- a/checks.c > +++ b/checks.c > @@ -740,7 +740,7 @@ static void check_alias_paths(struct check *c, struct dt_info *dti, > > /* This check does not work for overlays nor addons with external paths */ > if (!(dti->dtsflags & (DTSF_PLUGIN | DTSF_ADDON)) && > - (!prop->val.val || !get_node_by_path(dti->dt, prop->val.val))) { > + (!prop->val.val || !dti_get_node_by_path(dti, prop->val.val))) { > FAIL_PROP(c, dti, node, prop, "aliases property is not a valid node (%s)", > prop->val.val); > continue; > diff --git a/dtc.h b/dtc.h > index 4ebe576..8ba093f 100644 > --- a/dtc.h > +++ b/dtc.h > @@ -323,7 +323,6 @@ struct property *get_property_by_label(struct node *tree, const char *label, > struct marker *get_marker_label(struct node *tree, const char *label, > struct node **node, struct property **prop); > struct node *get_subnode(struct node *node, const char *nodename); > -struct node *get_node_by_path(struct node *tree, const char *path); > struct node *get_node_by_label(struct node *tree, const char *label); > struct node *get_node_by_phandle(struct node *tree, cell_t phandle); > struct node *get_node_by_ref(struct node *tree, const char *ref); > @@ -357,6 +356,8 @@ struct dt_info { > const char *outname; /* filename being written to, "-" for stdout */ > }; > > +struct node *dti_get_node_by_path(struct dt_info *dti, const char *path); > + > /* DTS version flags definitions */ > #define DTSF_V1 0x0001 /* /dts-v1/ */ > #define DTSF_PLUGIN 0x0002 /* /plugin/ */ > diff --git a/livetree.c b/livetree.c > index 285f6e1..23ba957 100644 > --- a/livetree.c > +++ b/livetree.c > @@ -659,7 +659,7 @@ struct node *get_subnode(struct node *node, const char *nodename) > return NULL; > } > > -struct node *get_node_by_path(struct node *tree, const char *path) > +static struct node *get_node_by_path(struct node *tree, const char *path) > { > const char *p; > struct node *child; > @@ -785,6 +785,19 @@ struct node *get_node_by_ref(struct node *tree, const char *ref) > return target; > } > > +struct node *dti_get_node_by_path(struct dt_info *dti, const char *path) > +{ > + struct node *node; > + > + if (dti->dt) { > + node = get_node_by_path(dti->dt, path); > + if (node) > + return node; > + } > + > + return NULL; > +} > + > static void add_phandle_property(struct node *node, > const char *name, int format) > { > -- > 2.52.0 > > -- David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson
signature.asc
(application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEO+dNsU4E3yXUXRK2zQJF27ox2GcFAmlojYAACgkQzQJF27ox 2GeK2Q/+OiGCHpAc79fjmJEW/PFi9z5/B4HKa3iXVV430YHC1F/6z1oAXdKy1pLf G9L+dH2/a7LFhJku5G/bslavarf0jNzRLUaZiIHRqBm1GNcJqCRXQmsTVpP20N0M ZIQ5kiMwbZFKzO6vc/7tG+7XI53fJVQh9uY80JLtmq2MPoCQfv6WXveCdUpYCBfM RxHYEtIdsemDYSA2QN+Umt13VHlDxLjukor7alFtkEX3EF0Oy+T2K2LzlLeoODjJ bUIZYWOGLWY45QXC/6Hu3A+aoP9YCecN0bOv3oBH/XE8mt9/rSscMm3bHSzQxN3L xSE/kZdrqXpPuRm/IrowOnTirC80Rqbs/1WwKvzF8HQ6WEqDlLf3ydiKZDkKzWbD jUJPJPJRrm4h7XyEXxSKmxSsCzABSV5tVXXaTW/kRnneto8jB4Sx4iBRwWjL32bQ Ppm8x4Vf+LLX2cO0y5GraMYD1eWAzr/EF/sRZ9EK5FpSVVNCnOIxE+FGiLHm13at hsmXLJ47RLpje4X+Lgt+esUl/yP74+1M/hcEX7Tej3SAIH/ng4CzaYg/ak4K/YdD g0zfn8JrWgfXD/yhwcucBfQmiVaZ0Yf0PEgl4r3pJgLy0kJ0Lg9T6FxD7cebpBkA 6ezHjS0NPYnWB6m9JMse7jBi75MYCGLR2rCt3cwOcrUN/g5AcnM= =C0WH -----END PGP SIGNATURE-----