From: Axel Lin <axel.lin@gmail.com>
To: linux-kernel@vger.kernel.org
Cc: Laxman Dewangan <ldewangan@nvidia.com>,
Liam Girdwood <lrg@ti.com>,
Mark Brown <broonie@opensource.wolfsonmicro.com>
Subject: [PATCH RFT 2/2] regulator: Convert rc5t583 to set_voltage
Date: Thu, 05 Apr 2012 14:07:36 +0800 [thread overview]
Message-ID: <1333606056.18055.3.camel@phoenix> (raw)
In-Reply-To: <1333605888.18055.1.camel@phoenix>
Not every regulator driver should implement set_voltage_sel callback.
See commit e8eef82
"regulator: Provide a selector based set_voltage_sel() operation".
For rc5t583, the regulator voltage can be mapped onto selector values with a
simple calculation, thus implement set_voltage is better than set_voltage_sel.
Signed-off-by: Axel Lin <axel.lin@gmail.com>
---
This patch also needs below patch to properly work.
https://lkml.org/lkml/2012/4/3/430
drivers/regulator/rc5t583-regulator.c | 23 +++++++++++++++--------
1 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/drivers/regulator/rc5t583-regulator.c b/drivers/regulator/rc5t583-regulator.c
index 578bd5d..43c8410 100644
--- a/drivers/regulator/rc5t583-regulator.c
+++ b/drivers/regulator/rc5t583-regulator.c
@@ -124,19 +124,26 @@ static int rc5t583_list_voltage(struct regulator_dev *rdev, unsigned selector)
return ri->min_uV + (ri->step_uV * selector);
}
-static int rc5t583_set_voltage_sel(struct regulator_dev *rdev,
- unsigned int selector)
+static int rc5t583_set_voltage(struct regulator_dev *rdev,
+ int min_uV, int max_uV, unsigned *selector)
{
struct rc5t583_regulator *reg = rdev_get_drvdata(rdev);
struct rc5t583_regulator_info *ri = reg->reg_info;
- int ret;
- if (selector >= rdev->desc->n_voltages) {
- dev_err(&rdev->dev, "Invalid selector 0x%02x\n", selector);
+ int sel, ret;
+
+ if (min_uV < ri->min_uV)
+ min_uV = ri->min_uV;
+
+ sel = DIV_ROUND_UP(min_uV - ri->min_uV, ri->step_uV);
+
+ if (sel >= rdev->desc->n_voltages) {
+ dev_err(&rdev->dev, "Invalid selector 0x%02x\n", sel);
return -EINVAL;
}
- ret = rc5t583_update(reg->mfd->dev, ri->vout_reg,
- selector, ri->vout_mask);
+ *selector = sel;
+
+ ret = rc5t583_update(reg->mfd->dev, ri->vout_reg, sel, ri->vout_mask);
if (ret < 0)
dev_err(&rdev->dev,
"Error in update voltage register 0x%02x\n", ri->vout_reg);
@@ -191,7 +198,7 @@ static struct regulator_ops rc5t583_ops = {
.disable = rc5t583_reg_disable,
.enable_time = rc5t583_regulator_enable_time,
.get_voltage_sel = rc5t583_get_voltage_sel,
- .set_voltage_sel = rc5t583_set_voltage_sel,
+ .set_voltage = rc5t583_set_voltage,
.list_voltage = rc5t583_list_voltage,
.set_voltage_time_sel = rc5t583_set_voltage_time_sel,
};
--
1.7.5.4
next prev parent reply other threads:[~2012-04-05 6:07 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-05 6:04 [PATCH 1/2] regulator: rc5t583: Remove nsteps from struct rc5t583_regulator_info Axel Lin
2012-04-05 6:07 ` Axel Lin [this message]
2012-04-05 7:01 ` [PATCH RFT 2/2] regulator: Convert rc5t583 to set_voltage Laxman Dewangan
2012-04-05 9:47 ` Mark Brown
2012-04-06 17:32 ` Mark Brown
2012-04-05 6:58 ` [PATCH 1/2] regulator: rc5t583: Remove nsteps from struct rc5t583_regulator_info Laxman Dewangan
2012-04-05 10:07 ` Mark Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1333606056.18055.3.camel@phoenix \
--to=axel.lin@gmail.com \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=ldewangan@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lrg@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.