linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC] regulator: core: Support for continuous voltage range
@ 2012-09-24 17:56 Pawel Moll
  2012-09-24 17:56 ` [PATCH v3] regulator: Versatile Express regulator driver Pawel Moll
  2012-10-11  4:50 ` [RFC] regulator: core: Support for continuous voltage range Mark Brown
  0 siblings, 2 replies; 4+ messages in thread
From: Pawel Moll @ 2012-09-24 17:56 UTC (permalink / raw)
  To: Mark Brown; +Cc: Liam Girdwood, linux-arm-kernel, linux-kernel, Pawel Moll

Some regulators can set any voltage within the constraints range,
not being limited to specified operating points.

This patch makes it possible to describe such regulator and makes
the regulator_is_supported_voltage() function behave correctly.

Signed-off-by: Pawel Moll <pawel.moll@arm.com>
---
 drivers/regulator/core.c         |    5 +++++
 include/linux/regulator/driver.h |    3 +++
 2 files changed, 8 insertions(+)

Hi Mark,

This is roughly what we discussed last week. Alternatively, it could be
also a "universal" unsigned regulator_desc.flags field with #define
REGULATOR_FLAG_CONTINUOUS_VOLTAGE_RAGE 0x1.

Regards

Pawel

diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 4838531..808928a 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -1947,6 +1947,11 @@ int regulator_is_supported_voltage(struct regulator *regulator,
 			return ret;
 	}
 
+	/* Any voltage within constrains range is fine? */
+	if (rdev->desc->continuous_voltage_range)
+		return min_uV >= rdev->constraints->min_uV &&
+				max_uV <= rdev->constraints->max_uV;
+
 	ret = regulator_count_voltages(regulator);
 	if (ret < 0)
 		return ret;
diff --git a/include/linux/regulator/driver.h b/include/linux/regulator/driver.h
index bac4c87..2f915b9 100644
--- a/include/linux/regulator/driver.h
+++ b/include/linux/regulator/driver.h
@@ -171,6 +171,8 @@ enum regulator_type {
  * @type: Indicates if the regulator is a voltage or current regulator.
  * @owner: Module providing the regulator, used for refcounting.
  *
+ * @continuous_voltage_range: Indicates if the regulator can set any
+ *                            voltage within constrains range.
  * @n_voltages: Number of selectors available for ops.list_voltage().
  *
  * @min_uV: Voltage given by the lowest selector (if linear mapping)
@@ -189,6 +191,7 @@ struct regulator_desc {
 	const char *name;
 	const char *supply_name;
 	int id;
+	bool continuous_voltage_range;
 	unsigned n_voltages;
 	struct regulator_ops *ops;
 	int irq;
-- 
1.7.9.5



^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-10-11  7:12 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-09-24 17:56 [RFC] regulator: core: Support for continuous voltage range Pawel Moll
2012-09-24 17:56 ` [PATCH v3] regulator: Versatile Express regulator driver Pawel Moll
2012-10-11  4:50   ` Mark Brown
2012-10-11  4:50 ` [RFC] regulator: core: Support for continuous voltage range Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).