When use DT to probe device, the probe routine may be erailier than regulator_init_complete(), so at that time the full_constraints isn't set yet, then the regulator_get() can't get the dummy regulator if the regulator is physically present and enabled. Set the full constraints in regulator_init() can fix this problem. Discussed this in the link: https://lkml.org/lkml/2013/10/8/40 Signed-off-by: Wei Ni <wni@xxxxxxxxxx> --- drivers/regulator/core.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 6382f0a..e80dd88 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -3773,6 +3773,15 @@ static int __init regulator_init(void) regulator_dummy_init(); + /* + * Since DT doesn't provide an idiomatic mechanism for + * enabling full constraints and since it's much more natural + * with DT to provide them just assume that a DT enabled + * system has full constraints. + */ + if (of_have_populated_dt()) + has_full_constraints = true; + return ret; } @@ -3786,15 +3795,6 @@ static int __init regulator_init_complete(void) struct regulation_constraints *c; int enabled, ret; - /* - * Since DT doesn't provide an idiomatic mechanism for - * enabling full constraints and since it's much more natural - * with DT to provide them just assume that a DT enabled - * system has full constraints. - */ - if (of_have_populated_dt()) - has_full_constraints = true; - mutex_lock(®ulator_list_mutex); /* If we have a full configuration then disable any regulators -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html