Re: [PATCH v2 3/5] regulator: helper routine to extractregulator_init_data

From: Grant Likely
Date: Mon Oct 24 2011 - 10:56:35 EST


On Mon, Oct 24, 2011 at 10:51:40PM +0800, Shawn Guo wrote:
> On Mon, Oct 24, 2011 at 03:59:50PM +0200, Grant Likely wrote:
> > On Mon, Oct 24, 2011 at 09:40:26PM +0800, Shawn Guo wrote:
> > > diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
> > > index 8fe132d..29dcf90 100644
> > > --- a/drivers/regulator/core.c
> > > +++ b/drivers/regulator/core.c
> > > @@ -2673,7 +2673,8 @@ struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc,
> > > BLOCKING_INIT_NOTIFIER_HEAD(&rdev->notifier);
> > >
> > > /* find device_node and attach it */
> > > - rdev->dev.of_node = of_find_node_by_name(NULL, regulator_desc->name);
> > > + rdev->dev.of_node = of_find_node_by_name(dev->parent->of_node,
> > > + regulator_desc->name);
> >
> > of_find_node_by_name() doesn't work that way. The first argument is a
> > starting point, but it doesn't restrict the search to children of a
> > node.
> >
> > for_each_child_of_node() is what you want to use when iterating over
> > the children which unfortunately changes the structure of this
> > function.
> >
> The dev->parent->of_node is meant to point to node 'pmic: mc13892@0'.
> And the intention here is not to iterate over the children, but to
> start a search from a reasonable point rather than the top root node.

It is always better to attach the of_node at struct device
registration time instead of searching the tree in common code. The
of_node should already be assigned by the time regulator_register() is
called. The caller should already have access to all that information
before the call anyway, especially since it is not strictly manditory
for all regulators to use the common binding. It is entirely
conceivable that the proposed binding won't work for some regulators.

g.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/