Re: [PATCH] regulator: Allow regulator-regulator supplies to be specified by name

Previous thread: [PATCH] Missmatch between source and Kconfig for ACPI && !PM by Christoph Egger on Monday, April 26, 2010 - 7:12 am. (1 message)

Next thread: [PATCH] perf: Fix libdw-dev package name in error message by Stefan Hajnoczi on Monday, April 26, 2010 - 7:27 am. (7 messages)
From: Mark Brown
Date: Monday, April 26, 2010 - 7:18 am

When one regulator supplies another allow the relationship to be specified
using names rather than struct regulators, in a similar manner to that
allowed for consumer supplies. This allows static configuration at compile
time, reducing the need for dynamic init code.

Also change the references to LINE supply to be system supply since line
is sometimes used for actual supplies and therefore potentially confusing.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
 drivers/regulator/core.c          |   30 ++++++++++++++++++++++++++++++
 include/linux/regulator/machine.h |    9 +++++++--
 2 files changed, 37 insertions(+), 2 deletions(-)

diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 51cf2bb..eb112d9 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -2328,7 +2328,37 @@ struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc,
 		goto scrub;
 
 	/* set supply regulator if it exists */
+	if (init_data->supply_regulator && init_data->supply_regulator_dev) {
+		dev_err(dev,
+			"Supply regulator specified by both name and dev\n");
+		goto scrub;
+	}
+
+	if (init_data->supply_regulator) {
+		struct regulator_dev *r;
+		int found = 0;
+
+		list_for_each_entry(r, &regulator_list, list) {
+			if (strcmp(rdev_get_name(r),
+				   init_data->supply_regulator) == 0) {
+				found = 1;
+				break;
+			}
+		}
+
+		if (!found) {
+			dev_err(dev, "Failed to find supply %s\n",
+				init_data->supply_regulator);
+			goto scrub;
+		}
+
+		ret = set_supply(rdev, r);
+		if (ret < 0)
+			goto scrub;
+	}
+
 	if (init_data->supply_regulator_dev) {
+		dev_warn(dev, "Uses supply_regulator_dev instead of regulator_supply\n");
 		ret = set_supply(rdev,
 			dev_get_drvdata(init_data->supply_regulator_dev));
 		if (ret < 0)
diff --git a/include/linux/regulator/machine.h b/include/linux/regulator/machine.h
index 234a847..e298028 100644
--- a/include/linux/regulator/machine.h
+++ ...
From: Liam Girdwood
Date: Monday, April 26, 2010 - 7:50 am

Applied.

Thanks

Liam

-- 
Freelance Developer, SlimLogic Ltd
ASoC and Voltage Regulator Maintainer.
http://www.slimlogic.co.uk

--

Previous thread: [PATCH] Missmatch between source and Kconfig for ACPI && !PM by Christoph Egger on Monday, April 26, 2010 - 7:12 am. (1 message)

Next thread: [PATCH] perf: Fix libdw-dev package name in error message by Stefan Hajnoczi on Monday, April 26, 2010 - 7:27 am. (7 messages)