* [PATCH] regulator: Use regmap_read/write(), regmap_update_bits functions directly
@ 2011-10-26 8:25 jhbird.choi at samsung.com
2011-10-26 10:28 ` Mark Brown
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: jhbird.choi at samsung.com @ 2011-10-26 8:25 UTC (permalink / raw)
To: linux-arm-kernel
From: Jonghwan Choi <jhbird.choi@samsung.com>
Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com>
---
drivers/regulator/tps65023-regulator.c | 74 +++++++++++--------------------
1 files changed, 26 insertions(+), 48 deletions(-)
diff --git a/drivers/regulator/tps65023-regulator.c b/drivers/regulator/tps65023-regulator.c
index 701a590..39f57b9 100644
--- a/drivers/regulator/tps65023-regulator.c
+++ b/drivers/regulator/tps65023-regulator.c
@@ -129,48 +129,22 @@ struct tps_pmic {
struct regmap *regmap;
};
-static int tps_65023_set_bits(struct tps_pmic *tps, u8 reg, u8 mask)
-{
- return regmap_update_bits(tps->regmap, reg, mask, mask);
-}
-
-static int tps_65023_clear_bits(struct tps_pmic *tps, u8 reg, u8 mask)
-{
- return regmap_update_bits(tps->regmap, reg, mask, 0);
-}
-
-static int tps_65023_reg_read(struct tps_pmic *tps, u8 reg)
-{
- unsigned int val;
- int ret;
-
- ret = regmap_read(tps->regmap, reg, &val);
-
- if (ret != 0)
- return ret;
- else
- return val;
-}
-
-static int tps_65023_reg_write(struct tps_pmic *tps, u8 reg, u8 val)
-{
- return regmap_write(tps->regmap, reg, val);
-}
static int tps65023_dcdc_is_enabled(struct regulator_dev *dev)
{
struct tps_pmic *tps = rdev_get_drvdata(dev);
int data, dcdc = rdev_get_id(dev);
+ int ret;
u8 shift;
if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3)
return -EINVAL;
shift = TPS65023_NUM_REGULATOR - dcdc;
- data = tps_65023_reg_read(tps, TPS65023_REG_REG_CTRL);
+ ret = regmap_read(tps->regmap, TPS65023_REG_REG_CTRL, &data);
- if (data < 0)
- return data;
+ if (ret != 0)
+ return ret;
else
return (data & 1<<shift) ? 1 : 0;
}
@@ -179,16 +153,17 @@ static int tps65023_ldo_is_enabled(struct regulator_dev *dev)
{
struct tps_pmic *tps = rdev_get_drvdata(dev);
int data, ldo = rdev_get_id(dev);
+ int ret;
u8 shift;
if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2)
return -EINVAL;
shift = (ldo == TPS65023_LDO_1 ? 1 : 2);
- data = tps_65023_reg_read(tps, TPS65023_REG_REG_CTRL);
+ ret = regmap_read(tps->regmap, TPS65023_REG_REG_CTRL, &data);
- if (data < 0)
- return data;
+ if (ret != 0)
+ return ret;
else
return (data & 1<<shift) ? 1 : 0;
}
@@ -203,7 +178,7 @@ static int tps65023_dcdc_enable(struct regulator_dev *dev)
return -EINVAL;
shift = TPS65023_NUM_REGULATOR - dcdc;
- return tps_65023_set_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift);
+ return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 1 << shift);
}
static int tps65023_dcdc_disable(struct regulator_dev *dev)
@@ -216,7 +191,7 @@ static int tps65023_dcdc_disable(struct regulator_dev *dev)
return -EINVAL;
shift = TPS65023_NUM_REGULATOR - dcdc;
- return tps_65023_clear_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift);
+ return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 0);
}
static int tps65023_ldo_enable(struct regulator_dev *dev)
@@ -229,7 +204,7 @@ static int tps65023_ldo_enable(struct regulator_dev *dev)
return -EINVAL;
shift = (ldo == TPS65023_LDO_1 ? 1 : 2);
- return tps_65023_set_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift);
+ return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 1 << shift);
}
static int tps65023_ldo_disable(struct regulator_dev *dev)
@@ -242,21 +217,22 @@ static int tps65023_ldo_disable(struct regulator_dev *dev)
return -EINVAL;
shift = (ldo == TPS65023_LDO_1 ? 1 : 2);
- return tps_65023_clear_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift);
+ return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 0);
}
static int tps65023_dcdc_get_voltage(struct regulator_dev *dev)
{
struct tps_pmic *tps = rdev_get_drvdata(dev);
+ int ret;
int data, dcdc = rdev_get_id(dev);
if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3)
return -EINVAL;
if (dcdc == TPS65023_DCDC_1) {
- data = tps_65023_reg_read(tps, TPS65023_REG_DEF_CORE);
- if (data < 0)
- return data;
+ ret = regmap_read(tps->regmap, TPS65023_REG_DEF_CORE, &data);
+ if (ret != 0)
+ return ret;
data &= (tps->info[dcdc]->table_len - 1);
return tps->info[dcdc]->table[data] * 1000;
} else
@@ -296,20 +272,21 @@ static int tps65023_dcdc_set_voltage(struct regulator_dev *dev,
if (vsel == tps->info[dcdc]->table_len)
return -EINVAL;
else
- return tps_65023_reg_write(tps, TPS65023_REG_DEF_CORE, vsel);
+ return regmap_write(tps->regmap, TPS65023_REG_DEF_CORE, vsel);
}
static int tps65023_ldo_get_voltage(struct regulator_dev *dev)
{
struct tps_pmic *tps = rdev_get_drvdata(dev);
int data, ldo = rdev_get_id(dev);
+ int ret;
if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2)
return -EINVAL;
- data = tps_65023_reg_read(tps, TPS65023_REG_LDO_CTRL);
- if (data < 0)
- return data;
+ ret = regmap_read(tps->regmap, TPS65023_REG_LDO_CTRL, &data);
+ if (ret != 0)
+ return ret;
data >>= (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1));
data &= (tps->info[ldo]->table_len - 1);
@@ -321,6 +298,7 @@ static int tps65023_ldo_set_voltage(struct regulator_dev *dev,
{
struct tps_pmic *tps = rdev_get_drvdata(dev);
int data, vsel, ldo = rdev_get_id(dev);
+ int ret;
if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2)
return -EINVAL;
@@ -344,13 +322,13 @@ static int tps65023_ldo_set_voltage(struct regulator_dev *dev,
*selector = vsel;
- data = tps_65023_reg_read(tps, TPS65023_REG_LDO_CTRL);
- if (data < 0)
- return data;
+ ret = regmap_read(tps->regmap, TPS65023_REG_LDO_CTRL, &data);
+ if (ret != 0)
+ return ret;
data &= TPS65023_LDO_CTRL_LDOx_MASK(ldo - TPS65023_LDO_1);
data |= (vsel << (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1)));
- return tps_65023_reg_write(tps, TPS65023_REG_LDO_CTRL, data);
+ return regmap_write(tps->regmap, TPS65023_REG_LDO_CTRL, data);
}
static int tps65023_dcdc_list_voltage(struct regulator_dev *dev,
--
1.7.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH] regulator: Use regmap_read/write(), regmap_update_bits functions directly
2011-10-26 8:25 [PATCH] regulator: Use regmap_read/write(), regmap_update_bits functions directly jhbird.choi at samsung.com
@ 2011-10-26 10:28 ` Mark Brown
2011-10-26 16:57 ` Grant Likely
2011-10-31 21:38 ` Mark Brown
2 siblings, 0 replies; 6+ messages in thread
From: Mark Brown @ 2011-10-26 10:28 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Oct 26, 2011 at 05:25:56PM +0900, jhbird.choi at samsung.com wrote:
> From: Jonghwan Choi <jhbird.choi@samsung.com>
>
> Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com>
You should always copy maintainers on patches - in this case you've
dropped Liam (added and not cut any text as a result).
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
> ---
> drivers/regulator/tps65023-regulator.c | 74 +++++++++++--------------------
> 1 files changed, 26 insertions(+), 48 deletions(-)
>
> diff --git a/drivers/regulator/tps65023-regulator.c b/drivers/regulator/tps65023-regulator.c
> index 701a590..39f57b9 100644
> --- a/drivers/regulator/tps65023-regulator.c
> +++ b/drivers/regulator/tps65023-regulator.c
> @@ -129,48 +129,22 @@ struct tps_pmic {
> struct regmap *regmap;
> };
>
> -static int tps_65023_set_bits(struct tps_pmic *tps, u8 reg, u8 mask)
> -{
> - return regmap_update_bits(tps->regmap, reg, mask, mask);
> -}
> -
> -static int tps_65023_clear_bits(struct tps_pmic *tps, u8 reg, u8 mask)
> -{
> - return regmap_update_bits(tps->regmap, reg, mask, 0);
> -}
> -
> -static int tps_65023_reg_read(struct tps_pmic *tps, u8 reg)
> -{
> - unsigned int val;
> - int ret;
> -
> - ret = regmap_read(tps->regmap, reg, &val);
> -
> - if (ret != 0)
> - return ret;
> - else
> - return val;
> -}
> -
> -static int tps_65023_reg_write(struct tps_pmic *tps, u8 reg, u8 val)
> -{
> - return regmap_write(tps->regmap, reg, val);
> -}
>
> static int tps65023_dcdc_is_enabled(struct regulator_dev *dev)
> {
> struct tps_pmic *tps = rdev_get_drvdata(dev);
> int data, dcdc = rdev_get_id(dev);
> + int ret;
> u8 shift;
>
> if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3)
> return -EINVAL;
>
> shift = TPS65023_NUM_REGULATOR - dcdc;
> - data = tps_65023_reg_read(tps, TPS65023_REG_REG_CTRL);
> + ret = regmap_read(tps->regmap, TPS65023_REG_REG_CTRL, &data);
>
> - if (data < 0)
> - return data;
> + if (ret != 0)
> + return ret;
> else
> return (data & 1<<shift) ? 1 : 0;
> }
> @@ -179,16 +153,17 @@ static int tps65023_ldo_is_enabled(struct regulator_dev *dev)
> {
> struct tps_pmic *tps = rdev_get_drvdata(dev);
> int data, ldo = rdev_get_id(dev);
> + int ret;
> u8 shift;
>
> if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2)
> return -EINVAL;
>
> shift = (ldo == TPS65023_LDO_1 ? 1 : 2);
> - data = tps_65023_reg_read(tps, TPS65023_REG_REG_CTRL);
> + ret = regmap_read(tps->regmap, TPS65023_REG_REG_CTRL, &data);
>
> - if (data < 0)
> - return data;
> + if (ret != 0)
> + return ret;
> else
> return (data & 1<<shift) ? 1 : 0;
> }
> @@ -203,7 +178,7 @@ static int tps65023_dcdc_enable(struct regulator_dev *dev)
> return -EINVAL;
>
> shift = TPS65023_NUM_REGULATOR - dcdc;
> - return tps_65023_set_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift);
> + return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 1 << shift);
> }
>
> static int tps65023_dcdc_disable(struct regulator_dev *dev)
> @@ -216,7 +191,7 @@ static int tps65023_dcdc_disable(struct regulator_dev *dev)
> return -EINVAL;
>
> shift = TPS65023_NUM_REGULATOR - dcdc;
> - return tps_65023_clear_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift);
> + return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 0);
> }
>
> static int tps65023_ldo_enable(struct regulator_dev *dev)
> @@ -229,7 +204,7 @@ static int tps65023_ldo_enable(struct regulator_dev *dev)
> return -EINVAL;
>
> shift = (ldo == TPS65023_LDO_1 ? 1 : 2);
> - return tps_65023_set_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift);
> + return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 1 << shift);
> }
>
> static int tps65023_ldo_disable(struct regulator_dev *dev)
> @@ -242,21 +217,22 @@ static int tps65023_ldo_disable(struct regulator_dev *dev)
> return -EINVAL;
>
> shift = (ldo == TPS65023_LDO_1 ? 1 : 2);
> - return tps_65023_clear_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift);
> + return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 0);
> }
>
> static int tps65023_dcdc_get_voltage(struct regulator_dev *dev)
> {
> struct tps_pmic *tps = rdev_get_drvdata(dev);
> + int ret;
> int data, dcdc = rdev_get_id(dev);
>
> if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3)
> return -EINVAL;
>
> if (dcdc == TPS65023_DCDC_1) {
> - data = tps_65023_reg_read(tps, TPS65023_REG_DEF_CORE);
> - if (data < 0)
> - return data;
> + ret = regmap_read(tps->regmap, TPS65023_REG_DEF_CORE, &data);
> + if (ret != 0)
> + return ret;
> data &= (tps->info[dcdc]->table_len - 1);
> return tps->info[dcdc]->table[data] * 1000;
> } else
> @@ -296,20 +272,21 @@ static int tps65023_dcdc_set_voltage(struct regulator_dev *dev,
> if (vsel == tps->info[dcdc]->table_len)
> return -EINVAL;
> else
> - return tps_65023_reg_write(tps, TPS65023_REG_DEF_CORE, vsel);
> + return regmap_write(tps->regmap, TPS65023_REG_DEF_CORE, vsel);
> }
>
> static int tps65023_ldo_get_voltage(struct regulator_dev *dev)
> {
> struct tps_pmic *tps = rdev_get_drvdata(dev);
> int data, ldo = rdev_get_id(dev);
> + int ret;
>
> if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2)
> return -EINVAL;
>
> - data = tps_65023_reg_read(tps, TPS65023_REG_LDO_CTRL);
> - if (data < 0)
> - return data;
> + ret = regmap_read(tps->regmap, TPS65023_REG_LDO_CTRL, &data);
> + if (ret != 0)
> + return ret;
>
> data >>= (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1));
> data &= (tps->info[ldo]->table_len - 1);
> @@ -321,6 +298,7 @@ static int tps65023_ldo_set_voltage(struct regulator_dev *dev,
> {
> struct tps_pmic *tps = rdev_get_drvdata(dev);
> int data, vsel, ldo = rdev_get_id(dev);
> + int ret;
>
> if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2)
> return -EINVAL;
> @@ -344,13 +322,13 @@ static int tps65023_ldo_set_voltage(struct regulator_dev *dev,
>
> *selector = vsel;
>
> - data = tps_65023_reg_read(tps, TPS65023_REG_LDO_CTRL);
> - if (data < 0)
> - return data;
> + ret = regmap_read(tps->regmap, TPS65023_REG_LDO_CTRL, &data);
> + if (ret != 0)
> + return ret;
>
> data &= TPS65023_LDO_CTRL_LDOx_MASK(ldo - TPS65023_LDO_1);
> data |= (vsel << (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1)));
> - return tps_65023_reg_write(tps, TPS65023_REG_LDO_CTRL, data);
> + return regmap_write(tps->regmap, TPS65023_REG_LDO_CTRL, data);
> }
>
> static int tps65023_dcdc_list_voltage(struct regulator_dev *dev,
> --
> 1.7.1
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] regulator: Use regmap_read/write(), regmap_update_bits functions directly
2011-10-26 8:25 [PATCH] regulator: Use regmap_read/write(), regmap_update_bits functions directly jhbird.choi at samsung.com
2011-10-26 10:28 ` Mark Brown
@ 2011-10-26 16:57 ` Grant Likely
2011-10-31 21:38 ` Mark Brown
2 siblings, 0 replies; 6+ messages in thread
From: Grant Likely @ 2011-10-26 16:57 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Oct 26, 2011 at 10:25 AM, <jhbird.choi@samsung.com> wrote:
> From: Jonghwan Choi <jhbird.choi@samsung.com>
>
> Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com>
Nitpick: All patches should include justification about why the
change is being made. It may be obvious to you, but take into account
the people looking at the commit after it hits Linus' tree. Very few
patches are trivial and obvious enough that the summary line is enough
justification.
g.
> ---
> ?drivers/regulator/tps65023-regulator.c | ? 74 +++++++++++--------------------
> ?1 files changed, 26 insertions(+), 48 deletions(-)
>
> diff --git a/drivers/regulator/tps65023-regulator.c b/drivers/regulator/tps65023-regulator.c
> index 701a590..39f57b9 100644
> --- a/drivers/regulator/tps65023-regulator.c
> +++ b/drivers/regulator/tps65023-regulator.c
> @@ -129,48 +129,22 @@ struct tps_pmic {
> ? ? ? ?struct regmap *regmap;
> ?};
>
> -static int tps_65023_set_bits(struct tps_pmic *tps, u8 reg, u8 mask)
> -{
> - ? ? ? return regmap_update_bits(tps->regmap, reg, mask, mask);
> -}
> -
> -static int tps_65023_clear_bits(struct tps_pmic *tps, u8 reg, u8 mask)
> -{
> - ? ? ? return regmap_update_bits(tps->regmap, reg, mask, 0);
> -}
> -
> -static int tps_65023_reg_read(struct tps_pmic *tps, u8 reg)
> -{
> - ? ? ? unsigned int val;
> - ? ? ? int ret;
> -
> - ? ? ? ret = regmap_read(tps->regmap, reg, &val);
> -
> - ? ? ? if (ret != 0)
> - ? ? ? ? ? ? ? return ret;
> - ? ? ? else
> - ? ? ? ? ? ? ? return val;
> -}
> -
> -static int tps_65023_reg_write(struct tps_pmic *tps, u8 reg, u8 val)
> -{
> - ? ? ? return regmap_write(tps->regmap, reg, val);
> -}
>
> ?static int tps65023_dcdc_is_enabled(struct regulator_dev *dev)
> ?{
> ? ? ? ?struct tps_pmic *tps = rdev_get_drvdata(dev);
> ? ? ? ?int data, dcdc = rdev_get_id(dev);
> + ? ? ? int ret;
> ? ? ? ?u8 shift;
>
> ? ? ? ?if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3)
> ? ? ? ? ? ? ? ?return -EINVAL;
>
> ? ? ? ?shift = TPS65023_NUM_REGULATOR - dcdc;
> - ? ? ? data = tps_65023_reg_read(tps, TPS65023_REG_REG_CTRL);
> + ? ? ? ret = regmap_read(tps->regmap, TPS65023_REG_REG_CTRL, &data);
>
> - ? ? ? if (data < 0)
> - ? ? ? ? ? ? ? return data;
> + ? ? ? if (ret != 0)
> + ? ? ? ? ? ? ? return ret;
> ? ? ? ?else
> ? ? ? ? ? ? ? ?return (data & 1<<shift) ? 1 : 0;
> ?}
> @@ -179,16 +153,17 @@ static int tps65023_ldo_is_enabled(struct regulator_dev *dev)
> ?{
> ? ? ? ?struct tps_pmic *tps = rdev_get_drvdata(dev);
> ? ? ? ?int data, ldo = rdev_get_id(dev);
> + ? ? ? int ret;
> ? ? ? ?u8 shift;
>
> ? ? ? ?if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2)
> ? ? ? ? ? ? ? ?return -EINVAL;
>
> ? ? ? ?shift = (ldo == TPS65023_LDO_1 ? 1 : 2);
> - ? ? ? data = tps_65023_reg_read(tps, TPS65023_REG_REG_CTRL);
> + ? ? ? ret = regmap_read(tps->regmap, TPS65023_REG_REG_CTRL, &data);
>
> - ? ? ? if (data < 0)
> - ? ? ? ? ? ? ? return data;
> + ? ? ? if (ret != 0)
> + ? ? ? ? ? ? ? return ret;
> ? ? ? ?else
> ? ? ? ? ? ? ? ?return (data & 1<<shift) ? 1 : 0;
> ?}
> @@ -203,7 +178,7 @@ static int tps65023_dcdc_enable(struct regulator_dev *dev)
> ? ? ? ? ? ? ? ?return -EINVAL;
>
> ? ? ? ?shift = TPS65023_NUM_REGULATOR - dcdc;
> - ? ? ? return tps_65023_set_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift);
> + ? ? ? return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 1 << shift);
> ?}
>
> ?static int tps65023_dcdc_disable(struct regulator_dev *dev)
> @@ -216,7 +191,7 @@ static int tps65023_dcdc_disable(struct regulator_dev *dev)
> ? ? ? ? ? ? ? ?return -EINVAL;
>
> ? ? ? ?shift = TPS65023_NUM_REGULATOR - dcdc;
> - ? ? ? return tps_65023_clear_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift);
> + ? ? ? return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 0);
> ?}
>
> ?static int tps65023_ldo_enable(struct regulator_dev *dev)
> @@ -229,7 +204,7 @@ static int tps65023_ldo_enable(struct regulator_dev *dev)
> ? ? ? ? ? ? ? ?return -EINVAL;
>
> ? ? ? ?shift = (ldo == TPS65023_LDO_1 ? 1 : 2);
> - ? ? ? return tps_65023_set_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift);
> + ? ? ? return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 1 << shift);
> ?}
>
> ?static int tps65023_ldo_disable(struct regulator_dev *dev)
> @@ -242,21 +217,22 @@ static int tps65023_ldo_disable(struct regulator_dev *dev)
> ? ? ? ? ? ? ? ?return -EINVAL;
>
> ? ? ? ?shift = (ldo == TPS65023_LDO_1 ? 1 : 2);
> - ? ? ? return tps_65023_clear_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift);
> + ? ? ? return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 0);
> ?}
>
> ?static int tps65023_dcdc_get_voltage(struct regulator_dev *dev)
> ?{
> ? ? ? ?struct tps_pmic *tps = rdev_get_drvdata(dev);
> + ? ? ? int ret;
> ? ? ? ?int data, dcdc = rdev_get_id(dev);
>
> ? ? ? ?if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3)
> ? ? ? ? ? ? ? ?return -EINVAL;
>
> ? ? ? ?if (dcdc == TPS65023_DCDC_1) {
> - ? ? ? ? ? ? ? data = tps_65023_reg_read(tps, TPS65023_REG_DEF_CORE);
> - ? ? ? ? ? ? ? if (data < 0)
> - ? ? ? ? ? ? ? ? ? ? ? return data;
> + ? ? ? ? ? ? ? ret = regmap_read(tps->regmap, TPS65023_REG_DEF_CORE, &data);
> + ? ? ? ? ? ? ? if (ret != 0)
> + ? ? ? ? ? ? ? ? ? ? ? return ret;
> ? ? ? ? ? ? ? ?data &= (tps->info[dcdc]->table_len - 1);
> ? ? ? ? ? ? ? ?return tps->info[dcdc]->table[data] * 1000;
> ? ? ? ?} else
> @@ -296,20 +272,21 @@ static int tps65023_dcdc_set_voltage(struct regulator_dev *dev,
> ? ? ? ?if (vsel == tps->info[dcdc]->table_len)
> ? ? ? ? ? ? ? ?return -EINVAL;
> ? ? ? ?else
> - ? ? ? ? ? ? ? return tps_65023_reg_write(tps, TPS65023_REG_DEF_CORE, vsel);
> + ? ? ? ? ? ? ? return regmap_write(tps->regmap, TPS65023_REG_DEF_CORE, vsel);
> ?}
>
> ?static int tps65023_ldo_get_voltage(struct regulator_dev *dev)
> ?{
> ? ? ? ?struct tps_pmic *tps = rdev_get_drvdata(dev);
> ? ? ? ?int data, ldo = rdev_get_id(dev);
> + ? ? ? int ret;
>
> ? ? ? ?if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2)
> ? ? ? ? ? ? ? ?return -EINVAL;
>
> - ? ? ? data = tps_65023_reg_read(tps, TPS65023_REG_LDO_CTRL);
> - ? ? ? if (data < 0)
> - ? ? ? ? ? ? ? return data;
> + ? ? ? ret = regmap_read(tps->regmap, TPS65023_REG_LDO_CTRL, &data);
> + ? ? ? if (ret != 0)
> + ? ? ? ? ? ? ? return ret;
>
> ? ? ? ?data >>= (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1));
> ? ? ? ?data &= (tps->info[ldo]->table_len - 1);
> @@ -321,6 +298,7 @@ static int tps65023_ldo_set_voltage(struct regulator_dev *dev,
> ?{
> ? ? ? ?struct tps_pmic *tps = rdev_get_drvdata(dev);
> ? ? ? ?int data, vsel, ldo = rdev_get_id(dev);
> + ? ? ? int ret;
>
> ? ? ? ?if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2)
> ? ? ? ? ? ? ? ?return -EINVAL;
> @@ -344,13 +322,13 @@ static int tps65023_ldo_set_voltage(struct regulator_dev *dev,
>
> ? ? ? ?*selector = vsel;
>
> - ? ? ? data = tps_65023_reg_read(tps, TPS65023_REG_LDO_CTRL);
> - ? ? ? if (data < 0)
> - ? ? ? ? ? ? ? return data;
> + ? ? ? ret = regmap_read(tps->regmap, TPS65023_REG_LDO_CTRL, &data);
> + ? ? ? if (ret != 0)
> + ? ? ? ? ? ? ? return ret;
>
> ? ? ? ?data &= TPS65023_LDO_CTRL_LDOx_MASK(ldo - TPS65023_LDO_1);
> ? ? ? ?data |= (vsel << (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1)));
> - ? ? ? return tps_65023_reg_write(tps, TPS65023_REG_LDO_CTRL, data);
> + ? ? ? return regmap_write(tps->regmap, TPS65023_REG_LDO_CTRL, data);
> ?}
>
> ?static int tps65023_dcdc_list_voltage(struct regulator_dev *dev,
> --
> 1.7.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at ?http://www.tux.org/lkml/
>
--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] regulator: Use regmap_read/write(), regmap_update_bits functions directly
2011-10-26 8:25 [PATCH] regulator: Use regmap_read/write(), regmap_update_bits functions directly jhbird.choi at samsung.com
2011-10-26 10:28 ` Mark Brown
2011-10-26 16:57 ` Grant Likely
@ 2011-10-31 21:38 ` Mark Brown
2 siblings, 0 replies; 6+ messages in thread
From: Mark Brown @ 2011-10-31 21:38 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Oct 26, 2011 at 05:25:56PM +0900, jhbird.choi at samsung.com wrote:
> From: Jonghwan Choi <jhbird.choi@samsung.com>
>
> Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com>
Please make sure you CC Liam on all regulator API patches - you should
CC all the maintainers for the subsystem. This needs to be refreshed
against current -next, it won't apply as-is (I suspect the patch is for
3.0 rather than current code).
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] regulator: Use regmap_read/write(), regmap_update_bits functions directly
@ 2011-11-06 23:16 jhbird.choi at samsung.com
2011-11-08 15:35 ` Mark Brown
0 siblings, 1 reply; 6+ messages in thread
From: jhbird.choi at samsung.com @ 2011-11-06 23:16 UTC (permalink / raw)
To: linux-arm-kernel
From: Jonghwan Choi <jhbird.choi@samsung.com>
Current driver had the regmapcalls within the bodies of the driver specific read/write fuctions.
This patch removes the original read/write functions and makes the call sites use regmap directly.
Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com>
---
drivers/regulator/tps65023-regulator.c | 87 ++++++++++++--------------------
1 files changed, 32 insertions(+), 55 deletions(-)
diff --git a/drivers/regulator/tps65023-regulator.c b/drivers/regulator/tps65023-regulator.c
index 9fb4c7b..e0bcd75 100644
--- a/drivers/regulator/tps65023-regulator.c
+++ b/drivers/regulator/tps65023-regulator.c
@@ -152,48 +152,21 @@ struct tps_driver_data {
u8 core_regulator;
};
-static int tps_65023_set_bits(struct tps_pmic *tps, u8 reg, u8 mask)
-{
- return regmap_update_bits(tps->regmap, reg, mask, mask);
-}
-
-static int tps_65023_clear_bits(struct tps_pmic *tps, u8 reg, u8 mask)
-{
- return regmap_update_bits(tps->regmap, reg, mask, 0);
-}
-
-static int tps_65023_reg_read(struct tps_pmic *tps, u8 reg)
-{
- unsigned int val;
- int ret;
-
- ret = regmap_read(tps->regmap, reg, &val);
-
- if (ret != 0)
- return ret;
- else
- return val;
-}
-
-static int tps_65023_reg_write(struct tps_pmic *tps, u8 reg, u8 val)
-{
- return regmap_write(tps->regmap, reg, val);
-}
-
static int tps65023_dcdc_is_enabled(struct regulator_dev *dev)
{
struct tps_pmic *tps = rdev_get_drvdata(dev);
int data, dcdc = rdev_get_id(dev);
+ int ret;
u8 shift;
if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3)
return -EINVAL;
shift = TPS65023_NUM_REGULATOR - dcdc;
- data = tps_65023_reg_read(tps, TPS65023_REG_REG_CTRL);
+ ret = regmap_read(tps->regmap, TPS65023_REG_REG_CTRL, &data);
- if (data < 0)
- return data;
+ if (ret != 0)
+ return ret;
else
return (data & 1<<shift) ? 1 : 0;
}
@@ -202,16 +175,17 @@ static int tps65023_ldo_is_enabled(struct regulator_dev *dev)
{
struct tps_pmic *tps = rdev_get_drvdata(dev);
int data, ldo = rdev_get_id(dev);
+ int ret;
u8 shift;
if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2)
return -EINVAL;
shift = (ldo == TPS65023_LDO_1 ? 1 : 2);
- data = tps_65023_reg_read(tps, TPS65023_REG_REG_CTRL);
+ ret = regmap_read(tps->regmap, TPS65023_REG_REG_CTRL, &data);
- if (data < 0)
- return data;
+ if (ret != 0)
+ return ret;
else
return (data & 1<<shift) ? 1 : 0;
}
@@ -226,7 +200,7 @@ static int tps65023_dcdc_enable(struct regulator_dev *dev)
return -EINVAL;
shift = TPS65023_NUM_REGULATOR - dcdc;
- return tps_65023_set_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift);
+ return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 1 << shift);
}
static int tps65023_dcdc_disable(struct regulator_dev *dev)
@@ -239,7 +213,7 @@ static int tps65023_dcdc_disable(struct regulator_dev *dev)
return -EINVAL;
shift = TPS65023_NUM_REGULATOR - dcdc;
- return tps_65023_clear_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift);
+ return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 0);
}
static int tps65023_ldo_enable(struct regulator_dev *dev)
@@ -252,7 +226,7 @@ static int tps65023_ldo_enable(struct regulator_dev *dev)
return -EINVAL;
shift = (ldo == TPS65023_LDO_1 ? 1 : 2);
- return tps_65023_set_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift);
+ return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 1 << shift);
}
static int tps65023_ldo_disable(struct regulator_dev *dev)
@@ -265,21 +239,22 @@ static int tps65023_ldo_disable(struct regulator_dev *dev)
return -EINVAL;
shift = (ldo == TPS65023_LDO_1 ? 1 : 2);
- return tps_65023_clear_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift);
+ return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 0);
}
static int tps65023_dcdc_get_voltage(struct regulator_dev *dev)
{
struct tps_pmic *tps = rdev_get_drvdata(dev);
+ int ret;
int data, dcdc = rdev_get_id(dev);
if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3)
return -EINVAL;
if (dcdc == tps->core_regulator) {
- data = tps_65023_reg_read(tps, TPS65023_REG_DEF_CORE);
- if (data < 0)
- return data;
+ ret = regmap_read(tps->regmap, TPS65023_REG_DEF_CORE, &data);
+ if (ret != 0)
+ return ret;
data &= (tps->info[dcdc]->table_len - 1);
return tps->info[dcdc]->table[data] * 1000;
} else
@@ -318,13 +293,13 @@ static int tps65023_dcdc_set_voltage(struct regulator_dev *dev,
if (vsel == tps->info[dcdc]->table_len)
goto failed;
- ret = tps_65023_reg_write(tps, TPS65023_REG_DEF_CORE, vsel);
+ ret = regmap_write(tps->regmap, TPS65023_REG_DEF_CORE, vsel);
/* Tell the chip that we have changed the value in DEFCORE
* and its time to update the core voltage
*/
- tps_65023_set_bits(tps, TPS65023_REG_CON_CTRL2,
- TPS65023_REG_CTRL2_GO);
+ regmap_update_bits(tps->regmap, TPS65023_REG_CON_CTRL2,
+ TPS65023_REG_CTRL2_GO, TPS65023_REG_CTRL2_GO);
return ret;
@@ -336,13 +311,14 @@ static int tps65023_ldo_get_voltage(struct regulator_dev *dev)
{
struct tps_pmic *tps = rdev_get_drvdata(dev);
int data, ldo = rdev_get_id(dev);
+ int ret;
if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2)
return -EINVAL;
- data = tps_65023_reg_read(tps, TPS65023_REG_LDO_CTRL);
- if (data < 0)
- return data;
+ ret = regmap_read(tps->regmap, TPS65023_REG_LDO_CTRL, &data);
+ if (ret != 0)
+ return ret;
data >>= (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1));
data &= (tps->info[ldo]->table_len - 1);
@@ -354,6 +330,7 @@ static int tps65023_ldo_set_voltage(struct regulator_dev *dev,
{
struct tps_pmic *tps = rdev_get_drvdata(dev);
int data, vsel, ldo = rdev_get_id(dev);
+ int ret;
if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2)
return -EINVAL;
@@ -377,13 +354,13 @@ static int tps65023_ldo_set_voltage(struct regulator_dev *dev,
*selector = vsel;
- data = tps_65023_reg_read(tps, TPS65023_REG_LDO_CTRL);
- if (data < 0)
- return data;
+ ret = regmap_read(tps->regmap, TPS65023_REG_LDO_CTRL, &data);
+ if (ret != 0)
+ return ret;
data &= TPS65023_LDO_CTRL_LDOx_MASK(ldo - TPS65023_LDO_1);
data |= (vsel << (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1)));
- return tps_65023_reg_write(tps, TPS65023_REG_LDO_CTRL, data);
+ return regmap_write(tps->regmap, TPS65023_REG_LDO_CTRL, data);
}
static int tps65023_dcdc_list_voltage(struct regulator_dev *dev,
@@ -511,12 +488,12 @@ static int __devinit tps_65023_probe(struct i2c_client *client,
i2c_set_clientdata(client, tps);
/* Enable setting output voltage by I2C */
- tps_65023_clear_bits(tps, TPS65023_REG_CON_CTRL2,
- TPS65023_REG_CTRL2_CORE_ADJ);
+ regmap_update_bits(tps->regmap, TPS65023_REG_CON_CTRL2,
+ TPS65023_REG_CTRL2_CORE_ADJ, TPS65023_REG_CTRL2_CORE_ADJ);
/* Enable setting output voltage by I2C */
- tps_65023_clear_bits(tps, TPS65023_REG_CON_CTRL2,
- TPS65023_REG_CTRL2_CORE_ADJ);
+ regmap_update_bits(tps->regmap, TPS65023_REG_CON_CTRL2,
+ TPS65023_REG_CTRL2_CORE_ADJ, TPS65023_REG_CTRL2_CORE_ADJ);
return 0;
--
1.7.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH] regulator: Use regmap_read/write(), regmap_update_bits functions directly
2011-11-06 23:16 jhbird.choi at samsung.com
@ 2011-11-08 15:35 ` Mark Brown
0 siblings, 0 replies; 6+ messages in thread
From: Mark Brown @ 2011-11-08 15:35 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Nov 07, 2011 at 08:16:04AM +0900, jhbird.choi at samsung.com wrote:
> From: Jonghwan Choi <jhbird.choi@samsung.com>
>
> Current driver had the regmapcalls within the bodies of the driver specific read/write fuctions.
> This patch removes the original read/write functions and makes the call sites use regmap directly.
>
> Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2011-11-08 15:35 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-26 8:25 [PATCH] regulator: Use regmap_read/write(), regmap_update_bits functions directly jhbird.choi at samsung.com
2011-10-26 10:28 ` Mark Brown
2011-10-26 16:57 ` Grant Likely
2011-10-31 21:38 ` Mark Brown
-- strict thread matches above, loose matches on Subject: below --
2011-11-06 23:16 jhbird.choi at samsung.com
2011-11-08 15:35 ` 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).