summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Bresticker <abrestic@chromium.org>2013-04-04 22:27:47 (GMT)
committerMark Brown <broonie@opensource.wolfsonmicro.com>2013-04-05 09:55:22 (GMT)
commit0f7b87f0acc04e4f22ec5d3f2283a80993ca3aa8 (patch)
tree4019f51c686512244927049417a98b69b334262f
parent167d41dce7633b70aae4175fdec734e1cdd3a190 (diff)
downloadlinux-0f7b87f0acc04e4f22ec5d3f2283a80993ca3aa8.tar.xz
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>
-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 edfa223..a51e1e5 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -3477,7 +3477,14 @@ regulator_register(const struct regulator_desc *regulator_desc,
r = regulator_dev_lookup(dev, supply, &ret);
- if (!r) {
+ if (ret == -ENODEV) {
+ /*
+ * No supply was specified for this regulator and
+ * there will never be one.
+ */
+ ret = 0;
+ goto add_dev;
+ } else if (!r) {
dev_err(dev, "Failed to find supply %s\n", supply);
ret = -EPROBE_DEFER;
goto scrub;
@@ -3495,6 +3502,7 @@ regulator_register(const struct regulator_desc *regulator_desc,
}
}
+add_dev:
/* add consumers devices */
if (init_data) {
for (i = 0; i < init_data->num_consumer_supplies; i++) {