[PATCH v2 3/5] regulator: helper routine to extract regulator_init_data
Grant Likely
grant.likely at secretlab.ca
Tue Oct 25 01:56:31 EST 2011
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 at 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.
More information about the devicetree-discuss
mailing list