On Thu, Oct 20, 2011 at 10:48:58AM +0530, Rajendra Nayak wrote:Let's look at mc13892-regulator driver. There are 23 regulators defined
in array mc13892_regulators. Needless to say, there is a dev behind
mc13892-regulator driver. And when getting probed, this driver will
call regulator_register() to register those 23 regulators individually.
That said, for non-dt world, we have 1 + 23 'dev' with that 1 as the
parent of all other 23 'dev' (wrapped by regulator_dev). But with the
current DT implementation, we will have at least 1 + 23 * 2 'dev'.
These extra 23 'dev' is totally new with DT.
but thats only because the mc13892-regulator driver is implemeted in
such a way that all the regulators on the platform are bundled in as
*one* device.
I did not look into too many regulator drivers, but I expect this is
way that most regulator drivers are implemented in. Having
mc13892-regulator being probed 23 times to register these 23 regulators
just makes less sense to me.
It would again depend on how you would pass these fromYes, I indeed would stick to the same way of bundling the registration
the DT, if you indeed stick to the same way of bundling all regulators
as one device from DT, the mc13892-regulator probe would just get called
once and there would be one device associated, no?
of all regulators with mc13892-regulator being probed once. The problem
I have with the current regulator core DT implementation is that it
assumes the device_node of rdev->dev (dev wrapped in regulator_dev) is
being attached to rdev->dev.parent rather than itself. Back to
mc13892-regulator example, that said, it requires the dev of
mc13892-regulator have the device_node of individual regulator attached
to. IOW, the current implementation forces mc13892-regulator to be
probed 23 times to register those 23 regulators. This is wrong to me.