Re: [PATCH] regulator: core: Resolve supplies before disabling unused regulators

From: Javier Martinez Canillas
Date: Thu Feb 16 2017 - 12:25:07 EST


On 02/16/2017 02:06 PM, Javier Martinez Canillas wrote:
> After commit 66d228a2bf03 ("regulator: core: Don't use regulators as
> supplies until the parent is bound"), input supplies aren't resolved
> if the input supplies parent device has not been bound. This prevent
> regulators to hold an invalid reference if its supply parent device
> driver probe is deferred.
> But this causes issues on some boards where a PMIC's regulator use as
> input supply a regulator from another PMIC whose driver is registered
> after the driver for the former.
> In this case the regulators for the first PMIC will fail to resolve
> input supplies on regulators registration (since the other PMIC wasn't
> probed yet). And when the core attempts to resolve again latter when
> the other PMIC registers its own regulators, it will fail again since
> the parent device isn't bound yet.
> This will cause some parent supplies to never be resolved and wrongly
> be disabled on boot due taking them as unused.
> To solve this problem don't attempt to resolve the pending regulators
> input supplies on regulator registration, but instead do it just once
> before disabling the unused regulators.
> This also makes the regulator resolve logic more efficient since there
> is no need to attempt to resolve the input supplies on each regulator
> registration, and doing it once before disabling the unused is enough.

I just noticed that this last paragraph is not true. Removing the input
supply resolve logic from regulator_registration() may cause issues for
modules, since these will register regulators after late_initcall().

So I'll post a v2 leaving this part. Sorry for the noise.

> Signed-off-by: Javier Martinez Canillas <javier@xxxxxxxxxxxxxxx>

Best regards,
Javier Martinez Canillas
Open Source Group
Samsung Research America