aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/regulator
diff options
context:
space:
mode:
authorAndrew Bresticker <abrestic@chromium.org>2013-04-04 18:27:47 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2013-04-05 05:55:22 -0400
commit0f7b87f0acc04e4f22ec5d3f2283a80993ca3aa8 (patch)
tree4019f51c686512244927049417a98b69b334262f /drivers/regulator
parent167d41dce7633b70aae4175fdec734e1cdd3a190 (diff)
regulator: core: don't require a supply when supply_name is specified
Regulator drivers may specify regulator_desc->supply_name which regulator_register() will use to find the supply node for a regulator. If no supply was specified in the device tree or the supply has yet to be registered regulator_register() will fail, deferring the probe of the regulator. In the case where no supply node was specified in the device tree, there is no supply and it is pointless to try and find one later, so go ahead and add the regulator without the supply. Signed-off-by: Andrew Bresticker <abrestic@chromium.org> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'drivers/regulator')
-rw-r--r--drivers/regulator/core.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index edfa2230d475..a51e1e5fdff3 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -3477,7 +3477,14 @@ regulator_register(const struct regulator_desc *regulator_desc,
3477 3477
3478 r = regulator_dev_lookup(dev, supply, &ret); 3478 r = regulator_dev_lookup(dev, supply, &ret);
3479 3479
3480 if (!r) { 3480 if (ret == -ENODEV) {
3481 /*
3482 * No supply was specified for this regulator and
3483 * there will never be one.
3484 */
3485 ret = 0;
3486 goto add_dev;
3487 } else if (!r) {
3481 dev_err(dev, "Failed to find supply %s\n", supply); 3488 dev_err(dev, "Failed to find supply %s\n", supply);
3482 ret = -EPROBE_DEFER; 3489 ret = -EPROBE_DEFER;
3483 goto scrub; 3490 goto scrub;
@@ -3495,6 +3502,7 @@ regulator_register(const struct regulator_desc *regulator_desc,
3495 } 3502 }
3496 } 3503 }
3497 3504
3505add_dev:
3498 /* add consumers devices */ 3506 /* add consumers devices */
3499 if (init_data) { 3507 if (init_data) {
3500 for (i = 0; i < init_data->num_consumer_supplies; i++) { 3508 for (i = 0; i < init_data->num_consumer_supplies; i++) {