On Tue, Oct 25, 2011 at 11:40:34AM +0530, Rajendra Nayak wrote:On Monday 24 October 2011 09:21 PM, Shawn Guo wrote:[...]On Mon, Oct 24, 2011 at 04:56:31PM +0200, Grant Likely wrote:No, it's not the root of my problem. Again, we are talking aboutIt 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.
That's the problem we have. There is no 'struct dev' to attach of_node
for each regulator by the time regulator_register() is called, because
the 'struct dev' for each regulator is created inside
regulator_register() as wrapped by 'struct regulator_dev'.
The root of your problem seems to be that your pmic driver isn't
registering regulator devices from DT, and if it did, you wouldn't
need to do a search in dev->parent->of_node and instead the driver
would have the right dev->of_node populated.
'Case 2', where multiple regulator devices are registered to
regulator core with regulator driver being probed once, where each
regulator node is taken as the child of 'regulators' node. Having
device_node of 'regulators' attached to dev->of_node does not help
at all. What we need is to have each child node attached to
regulator_dev->dev.of_node.