2012-05-23 14:59:36

by Axel Lin

[permalink] [raw]
Subject: [PATCH 1/2] regulator: wm8350: Convert wm8350_dcdc_ops to regulator_list_voltage_linear

Signed-off-by: Axel Lin <[email protected]>
---
drivers/regulator/wm8350-regulator.c | 18 +++++++++---------
1 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/regulator/wm8350-regulator.c b/drivers/regulator/wm8350-regulator.c
index 94e550d..6d143a918 100644
--- a/drivers/regulator/wm8350-regulator.c
+++ b/drivers/regulator/wm8350-regulator.c
@@ -433,14 +433,6 @@ static int wm8350_dcdc_get_voltage_sel(struct regulator_dev *rdev)
return wm8350_reg_read(wm8350, volt_reg) & WM8350_DC1_VSEL_MASK;
}

-static int wm8350_dcdc_list_voltage(struct regulator_dev *rdev,
- unsigned selector)
-{
- if (selector > WM8350_DCDC_MAX_VSEL)
- return -EINVAL;
- return wm8350_dcdc_val_to_mvolts(selector) * 1000;
-}
-
static int wm8350_dcdc_set_suspend_voltage(struct regulator_dev *rdev, int uV)
{
struct wm8350 *wm8350 = rdev_get_drvdata(rdev);
@@ -1226,7 +1218,7 @@ static int wm8350_ldo_is_enabled(struct regulator_dev *rdev)
static struct regulator_ops wm8350_dcdc_ops = {
.set_voltage = wm8350_dcdc_set_voltage,
.get_voltage_sel = wm8350_dcdc_get_voltage_sel,
- .list_voltage = wm8350_dcdc_list_voltage,
+ .list_voltage = regulator_list_voltage_linear,
.enable = wm8350_dcdc_enable,
.disable = wm8350_dcdc_disable,
.get_mode = wm8350_dcdc_get_mode,
@@ -1277,6 +1269,8 @@ static const struct regulator_desc wm8350_reg[NUM_WM8350_REGULATORS] = {
.irq = WM8350_IRQ_UV_DC1,
.type = REGULATOR_VOLTAGE,
.n_voltages = WM8350_DCDC_MAX_VSEL + 1,
+ .min_uV = 850000,
+ .uV_step = 25000,
.owner = THIS_MODULE,
},
{
@@ -1294,6 +1288,8 @@ static const struct regulator_desc wm8350_reg[NUM_WM8350_REGULATORS] = {
.irq = WM8350_IRQ_UV_DC3,
.type = REGULATOR_VOLTAGE,
.n_voltages = WM8350_DCDC_MAX_VSEL + 1,
+ .min_uV = 850000,
+ .uV_step = 25000,
.owner = THIS_MODULE,
},
{
@@ -1303,6 +1299,8 @@ static const struct regulator_desc wm8350_reg[NUM_WM8350_REGULATORS] = {
.irq = WM8350_IRQ_UV_DC4,
.type = REGULATOR_VOLTAGE,
.n_voltages = WM8350_DCDC_MAX_VSEL + 1,
+ .min_uV = 850000,
+ .uV_step = 25000,
.owner = THIS_MODULE,
},
{
@@ -1320,6 +1318,8 @@ static const struct regulator_desc wm8350_reg[NUM_WM8350_REGULATORS] = {
.irq = WM8350_IRQ_UV_DC6,
.type = REGULATOR_VOLTAGE,
.n_voltages = WM8350_DCDC_MAX_VSEL + 1,
+ .min_uV = 850000,
+ .uV_step = 25000,
.owner = THIS_MODULE,
},
{
--
1.7.5.4



2012-05-23 15:01:26

by Axel Lin

[permalink] [raw]
Subject: [PATCH 2/2] regulator: wm8350: Convert wm8350_dcdc_ops to set_voltage_sel and regulator_map_voltage_linear

Signed-off-by: Axel Lin <[email protected]>
---
drivers/regulator/wm8350-regulator.c | 30 ++++++------------------------
1 files changed, 6 insertions(+), 24 deletions(-)

diff --git a/drivers/regulator/wm8350-regulator.c b/drivers/regulator/wm8350-regulator.c
index 6d143a918..3f451e8 100644
--- a/drivers/regulator/wm8350-regulator.c
+++ b/drivers/regulator/wm8350-regulator.c
@@ -125,11 +125,6 @@ static inline unsigned int wm8350_ldo_mvolts_to_val(int mV)
return ((mV - 1800) / 100) + 16;
}

-static inline int wm8350_dcdc_val_to_mvolts(unsigned int val)
-{
- return (val * 25) + 850;
-}
-
static inline unsigned int wm8350_dcdc_mvolts_to_val(int mV)
{
return (mV - 850) / 25;
@@ -359,25 +354,13 @@ int wm8350_isink_set_flash(struct wm8350 *wm8350, int isink, u16 mode,
}
EXPORT_SYMBOL_GPL(wm8350_isink_set_flash);

-static int wm8350_dcdc_set_voltage(struct regulator_dev *rdev, int min_uV,
- int max_uV, unsigned *selector)
+static int wm8350_dcdc_set_voltage_sel(struct regulator_dev *rdev,
+ unsigned selector)
{
struct wm8350 *wm8350 = rdev_get_drvdata(rdev);
- int volt_reg, dcdc = rdev_get_id(rdev), mV,
- min_mV = min_uV / 1000, max_mV = max_uV / 1000;
+ int volt_reg, dcdc = rdev_get_id(rdev);
u16 val;

- if (min_mV < 850 || min_mV > 4025)
- return -EINVAL;
- if (max_mV < 850 || max_mV > 4025)
- return -EINVAL;
-
- /* step size is 25mV */
- mV = (min_mV - 826) / 25;
- if (wm8350_dcdc_val_to_mvolts(mV) > max_mV)
- return -EINVAL;
- BUG_ON(wm8350_dcdc_val_to_mvolts(mV) < min_mV);
-
switch (dcdc) {
case WM8350_DCDC_1:
volt_reg = WM8350_DCDC1_CONTROL;
@@ -397,11 +380,9 @@ static int wm8350_dcdc_set_voltage(struct regulator_dev *rdev, int min_uV,
return -EINVAL;
}

- *selector = mV;
-
/* all DCDCs have same mV bits */
val = wm8350_reg_read(wm8350, volt_reg) & ~WM8350_DC1_VSEL_MASK;
- wm8350_reg_write(wm8350, volt_reg, val | mV);
+ wm8350_reg_write(wm8350, volt_reg, val | selector);
return 0;
}

@@ -1216,9 +1197,10 @@ static int wm8350_ldo_is_enabled(struct regulator_dev *rdev)
}

static struct regulator_ops wm8350_dcdc_ops = {
- .set_voltage = wm8350_dcdc_set_voltage,
+ .set_voltage_sel = wm8350_dcdc_set_voltage_sel,
.get_voltage_sel = wm8350_dcdc_get_voltage_sel,
.list_voltage = regulator_list_voltage_linear,
+ .map_voltage = regulator_map_voltage_linear,
.enable = wm8350_dcdc_enable,
.disable = wm8350_dcdc_disable,
.get_mode = wm8350_dcdc_get_mode,
--
1.7.5.4


2012-05-23 17:13:45

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH 1/2] regulator: wm8350: Convert wm8350_dcdc_ops to regulator_list_voltage_linear

On Wed, May 23, 2012 at 10:59:26PM +0800, Axel Lin wrote:

> Signed-off-by: Axel Lin <[email protected]>

Versions of both of these are already queued for 3.6 as part of a series
of changes converting the driver to use the new regmap helpers. They're
not in yet as the core driver conversion to regmap is only going in this
merge window, once mfd is merged in -rc1 they'll go in.


Attachments:
(No filename) (382.00 B)
signature.asc (836.00 B)
Digital signature
Download all attachments