[PATCH v2 02/16] device property: Add fwnode_graph_get_next_port_endpoint()
Andy Shevchenko
andriy.shevchenko at linux.intel.com
Sat Jun 13 06:00:40 PDT 2026
On Fri, Jun 12, 2026 at 04:20:18PM +0900, Chen-Yu Tsai wrote:
> On Wed, Jun 10, 2026 at 11:08 PM Andy Shevchenko
> <andriy.shevchenko at linux.intel.com> wrote:
> > On Wed, Jun 10, 2026 at 04:40:36PM +0800, Chen-Yu Tsai wrote:
...
> > > +struct fwnode_handle *fwnode_graph_get_next_port_endpoint(const struct fwnode_handle *port,
> > > + struct fwnode_handle *prev)
> > > +{
> > > + struct fwnode_handle *ep;
> >
> > Unused?
> >
> > > + while (1) {
> >
> > This is usually harder to read and follow. It's like "pay much attention on
> > the code", but here no rocket science, no code to really pay attention to.
> >
> > > + prev = fwnode_get_next_child_node(port, prev);
> > > + if (!prev)
> > > + break;
> > > +
> > > + if (WARN(!fwnode_name_eq(prev, "endpoint"),
> > > + "non endpoint node is used (%pfw)", prev))
> > > + continue;
> > > +
> > > + break;
> > > + }
> > > +
> > > + return prev;
> > > +}
> >
> > So, this can be rewritten as
> >
> > ep = prev;
> > do {
> > ep = fwnode_get_next_child_node(port, ep);
> > if (fwnode_name_eq(ep, "endpoint"))
> > break;
> >
> > WARN_ON(ep, ...);
> > } while (ep);
> >
> > return ep;
> >
> > But also big question why? to WARN*(). There is no use in the entire
> > property.c.
>
> Will drop. This function was lifted from drivers/of/property.c then
> adapted to the fwnode APIs, so it still has the structure of its
> origin. With the WARN() gone, rewriting it as do {} while() becomes:
>
> do {
> prev = fwnode_get_next_child_node(port, prev);
> if (prev && fwnode_name_eq(prev, "endpoint"))
'prev &&' is not needed.
> break;
> } while (prev);
>
> return prev;
--
With Best Regards,
Andy Shevchenko
More information about the linux-arm-kernel
mailing list