[PATCH 4/4] regulator: mc13783 change to platform_driver_register.

Alberto Panizzo maramaopercheseimorto at gmail.com
Mon Dec 14 05:59:32 EST 2009

Il giorno dom, 13/12/2009 alle 21.05 +0100, Uwe Kleine-König ha scritto:
> Hello,
> On Sat, Dec 12, 2009 at 06:06:17PM +0100, Alberto Panizzo wrote:
> > Change the instant when regulator driver is probed. 
> > To have a correct regulators initialisation (enable, disable and voltages 
> > selection), the driver must have access to mc13783 registers and so 
> > mc13783-core must be loaded before this.
> > 
> > With this patch mc13783_regulator_probe is called when mc13783-core
> > register the regulator subsystem.
> > 
> > Signed-off-by: Alberto Panizzo <maramaopercheseimorto at gmail.com>
> I think the change is OK, the commit log isn't optimal though.
> You might want to point out that the problem only occurs if the driver
> is built-in and that mc13783_regulator_probe doesn't need to be changed
> as it already lives in .devinit.text

My problem is a not great knowledge of different types of initcall, I 
have to improve myself in this! 

> As if mc13783-regulator is built-in mc13783-core is built-in, too, the
> wording isn't good.  The problem is (I suppose) that regulators are
> linked first and so mc13783-core isn't *probed* early enough and so the
> mc13783-regulator device isn't available at mc13783-regulator probing
> time.

This is the problem. As I understand subsystem_initcall it is the function
called by the system when that subsystem is initialised.
Because of mc13783-regulator is in the regulator subsystem it is called very 
early in the boot process (regulators are meant to be initialised in a very
early phase).

The way that mc13783-regulator's subsystem_initcall call mc13783_regulator_probe
is correct, is only if mc13783-regulator is a subsystem of mc13783-core (mfd?).

Thanks all for reviewing!

Best regards.

More information about the linux-arm-kernel mailing list