Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1236335 > unrolled thread
| Started by | Sascha Hauer <s.hauer@pengutronix.de> |
|---|---|
| First post | 2015-09-30 16:10 +0200 |
| Last post | 2015-10-01 13:30 +0200 |
| Articles | 3 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH 3/6] regulator: core: create unlocked version of regulator_list_voltage Sascha Hauer <s.hauer@pengutronix.de> - 2015-09-30 16:10 +0200
Re: [PATCH 3/6] regulator: core: create unlocked version of regulator_list_voltage Mark Brown <broonie@kernel.org> - 2015-10-01 00:40 +0200
Re: [PATCH 3/6] regulator: core: create unlocked version of regulator_list_voltage Mark Brown <broonie@kernel.org> - 2015-10-01 13:30 +0200
| From | Sascha Hauer <s.hauer@pengutronix.de> |
|---|---|
| Date | 2015-09-30 16:10 +0200 |
| Subject | [PATCH 3/6] regulator: core: create unlocked version of regulator_list_voltage |
| Message-ID | <qeqf1-7dN-31@gated-at.bofh.it> |
The unlocked version will be needed when we start propagating voltage
changes to the supply regulators.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
drivers/regulator/core.c | 62 +++++++++++++++++++++++++++---------------------
1 file changed, 35 insertions(+), 27 deletions(-)
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index e5de3d9..d148545 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -2343,6 +2343,40 @@ static int _regulator_is_enabled(struct regulator_dev *rdev)
return rdev->desc->ops->is_enabled(rdev);
}
+static int _regulator_list_voltage(struct regulator *regulator,
+ unsigned selector, int lock)
+{
+ struct regulator_dev *rdev = regulator->rdev;
+ const struct regulator_ops *ops = rdev->desc->ops;
+ int ret;
+
+ if (rdev->desc->fixed_uV && rdev->desc->n_voltages == 1 && !selector)
+ return rdev->desc->fixed_uV;
+
+ if (ops->list_voltage) {
+ if (selector >= rdev->desc->n_voltages)
+ return -EINVAL;
+ if (lock)
+ mutex_lock(&rdev->mutex);
+ ret = ops->list_voltage(rdev, selector);
+ if (lock)
+ mutex_unlock(&rdev->mutex);
+ } else if (rdev->supply) {
+ ret = _regulator_list_voltage(rdev->supply, selector, lock);
+ } else {
+ return -EINVAL;
+ }
+
+ if (ret > 0) {
+ if (ret < rdev->constraints->min_uV)
+ ret = 0;
+ else if (ret > rdev->constraints->max_uV)
+ ret = 0;
+ }
+
+ return ret;
+}
+
/**
* regulator_is_enabled - is the regulator output enabled
* @regulator: regulator source
@@ -2432,33 +2466,7 @@ EXPORT_SYMBOL_GPL(regulator_count_voltages);
*/
int regulator_list_voltage(struct regulator *regulator, unsigned selector)
{
- struct regulator_dev *rdev = regulator->rdev;
- const struct regulator_ops *ops = rdev->desc->ops;
- int ret;
-
- if (rdev->desc->fixed_uV && rdev->desc->n_voltages == 1 && !selector)
- return rdev->desc->fixed_uV;
-
- if (ops->list_voltage) {
- if (selector >= rdev->desc->n_voltages)
- return -EINVAL;
- mutex_lock(&rdev->mutex);
- ret = ops->list_voltage(rdev, selector);
- mutex_unlock(&rdev->mutex);
- } else if (rdev->supply) {
- ret = regulator_list_voltage(rdev->supply, selector);
- } else {
- return -EINVAL;
- }
-
- if (ret > 0) {
- if (ret < rdev->constraints->min_uV)
- ret = 0;
- else if (ret > rdev->constraints->max_uV)
- ret = 0;
- }
-
- return ret;
+ return _regulator_list_voltage(regulator, selector, 1);
}
EXPORT_SYMBOL_GPL(regulator_list_voltage);
--
2.5.3
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Mark Brown <broonie@kernel.org> |
|---|---|
| Date | 2015-10-01 00:40 +0200 |
| Subject | Re: [PATCH 3/6] regulator: core: create unlocked version of regulator_list_voltage |
| Message-ID | <qeycx-1Kc-1@gated-at.bofh.it> |
| In reply to | #1236335 |
[Multipart message — attachments visible in raw view] — view raw
On Wed, Sep 30, 2015 at 04:05:43PM +0200, Sascha Hauer wrote: > The unlocked version will be needed when we start propagating voltage > changes to the supply regulators. I'm now wondering why we have a locked _list_voltage() in the first place... it *should* be a pure function that doesn't need any locking. I'll check tomorrow if there are any users who care but if there aren't the change here is probably to remove the locking entirely.
[toc] | [prev] | [next] | [standalone]
| From | Mark Brown <broonie@kernel.org> |
|---|---|
| Date | 2015-10-01 13:30 +0200 |
| Subject | Re: [PATCH 3/6] regulator: core: create unlocked version of regulator_list_voltage |
| Message-ID | <qeKdI-2A1-15@gated-at.bofh.it> |
| In reply to | #1236835 |
[Multipart message — attachments visible in raw view] — view raw
On Wed, Sep 30, 2015 at 11:36:03PM +0100, Mark Brown wrote: > On Wed, Sep 30, 2015 at 04:05:43PM +0200, Sascha Hauer wrote: > > The unlocked version will be needed when we start propagating voltage > > changes to the supply regulators. > > I'm now wondering why we have a locked _list_voltage() in the first > place... it *should* be a pure function that doesn't need any locking. > I'll check tomorrow if there are any users who care but if there aren't > the change here is probably to remove the locking entirely. Hrm, looks like there's one that *might* need it - let's go with this for now, we can always fix up later.
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web