Commit 43530b69 authored by Jonghwan Choi's avatar Jonghwan Choi Committed by Mark Brown

regulator: Use regmap_read/write(), regmap_update_bits functions directly

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: default avatarJonghwan Choi <jhbird.choi@samsung.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent cfcfc9ec
...@@ -152,48 +152,21 @@ struct tps_driver_data { ...@@ -152,48 +152,21 @@ struct tps_driver_data {
u8 core_regulator; 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) static int tps65023_dcdc_is_enabled(struct regulator_dev *dev)
{ {
struct tps_pmic *tps = rdev_get_drvdata(dev); struct tps_pmic *tps = rdev_get_drvdata(dev);
int data, dcdc = rdev_get_id(dev); int data, dcdc = rdev_get_id(dev);
int ret;
u8 shift; u8 shift;
if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3) if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3)
return -EINVAL; return -EINVAL;
shift = TPS65023_NUM_REGULATOR - dcdc; 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) if (ret != 0)
return data; return ret;
else else
return (data & 1<<shift) ? 1 : 0; return (data & 1<<shift) ? 1 : 0;
} }
...@@ -202,16 +175,17 @@ static int tps65023_ldo_is_enabled(struct regulator_dev *dev) ...@@ -202,16 +175,17 @@ static int tps65023_ldo_is_enabled(struct regulator_dev *dev)
{ {
struct tps_pmic *tps = rdev_get_drvdata(dev); struct tps_pmic *tps = rdev_get_drvdata(dev);
int data, ldo = rdev_get_id(dev); int data, ldo = rdev_get_id(dev);
int ret;
u8 shift; u8 shift;
if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2) if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2)
return -EINVAL; return -EINVAL;
shift = (ldo == TPS65023_LDO_1 ? 1 : 2); 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) if (ret != 0)
return data; return ret;
else else
return (data & 1<<shift) ? 1 : 0; return (data & 1<<shift) ? 1 : 0;
} }
...@@ -226,7 +200,7 @@ static int tps65023_dcdc_enable(struct regulator_dev *dev) ...@@ -226,7 +200,7 @@ static int tps65023_dcdc_enable(struct regulator_dev *dev)
return -EINVAL; return -EINVAL;
shift = TPS65023_NUM_REGULATOR - dcdc; 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) static int tps65023_dcdc_disable(struct regulator_dev *dev)
...@@ -239,7 +213,7 @@ static int tps65023_dcdc_disable(struct regulator_dev *dev) ...@@ -239,7 +213,7 @@ static int tps65023_dcdc_disable(struct regulator_dev *dev)
return -EINVAL; return -EINVAL;
shift = TPS65023_NUM_REGULATOR - dcdc; 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) static int tps65023_ldo_enable(struct regulator_dev *dev)
...@@ -252,7 +226,7 @@ static int tps65023_ldo_enable(struct regulator_dev *dev) ...@@ -252,7 +226,7 @@ static int tps65023_ldo_enable(struct regulator_dev *dev)
return -EINVAL; return -EINVAL;
shift = (ldo == TPS65023_LDO_1 ? 1 : 2); 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) static int tps65023_ldo_disable(struct regulator_dev *dev)
...@@ -265,21 +239,22 @@ static int tps65023_ldo_disable(struct regulator_dev *dev) ...@@ -265,21 +239,22 @@ static int tps65023_ldo_disable(struct regulator_dev *dev)
return -EINVAL; return -EINVAL;
shift = (ldo == TPS65023_LDO_1 ? 1 : 2); 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) static int tps65023_dcdc_get_voltage(struct regulator_dev *dev)
{ {
struct tps_pmic *tps = rdev_get_drvdata(dev); struct tps_pmic *tps = rdev_get_drvdata(dev);
int ret;
int data, dcdc = rdev_get_id(dev); int data, dcdc = rdev_get_id(dev);
if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3) if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3)
return -EINVAL; return -EINVAL;
if (dcdc == tps->core_regulator) { if (dcdc == tps->core_regulator) {
data = tps_65023_reg_read(tps, TPS65023_REG_DEF_CORE); ret = regmap_read(tps->regmap, TPS65023_REG_DEF_CORE, &data);
if (data < 0) if (ret != 0)
return data; return ret;
data &= (tps->info[dcdc]->table_len - 1); data &= (tps->info[dcdc]->table_len - 1);
return tps->info[dcdc]->table[data] * 1000; return tps->info[dcdc]->table[data] * 1000;
} else } else
...@@ -318,13 +293,13 @@ static int tps65023_dcdc_set_voltage(struct regulator_dev *dev, ...@@ -318,13 +293,13 @@ static int tps65023_dcdc_set_voltage(struct regulator_dev *dev,
if (vsel == tps->info[dcdc]->table_len) if (vsel == tps->info[dcdc]->table_len)
goto failed; 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 /* Tell the chip that we have changed the value in DEFCORE
* and its time to update the core voltage * and its time to update the core voltage
*/ */
tps_65023_set_bits(tps, TPS65023_REG_CON_CTRL2, regmap_update_bits(tps->regmap, TPS65023_REG_CON_CTRL2,
TPS65023_REG_CTRL2_GO); TPS65023_REG_CTRL2_GO, TPS65023_REG_CTRL2_GO);
return ret; return ret;
...@@ -336,13 +311,14 @@ static int tps65023_ldo_get_voltage(struct regulator_dev *dev) ...@@ -336,13 +311,14 @@ static int tps65023_ldo_get_voltage(struct regulator_dev *dev)
{ {
struct tps_pmic *tps = rdev_get_drvdata(dev); struct tps_pmic *tps = rdev_get_drvdata(dev);
int data, ldo = rdev_get_id(dev); int data, ldo = rdev_get_id(dev);
int ret;
if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2) if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2)
return -EINVAL; return -EINVAL;
data = tps_65023_reg_read(tps, TPS65023_REG_LDO_CTRL); ret = regmap_read(tps->regmap, TPS65023_REG_LDO_CTRL, &data);
if (data < 0) if (ret != 0)
return data; return ret;
data >>= (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1)); data >>= (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1));
data &= (tps->info[ldo]->table_len - 1); data &= (tps->info[ldo]->table_len - 1);
...@@ -354,6 +330,7 @@ static int tps65023_ldo_set_voltage(struct regulator_dev *dev, ...@@ -354,6 +330,7 @@ static int tps65023_ldo_set_voltage(struct regulator_dev *dev,
{ {
struct tps_pmic *tps = rdev_get_drvdata(dev); struct tps_pmic *tps = rdev_get_drvdata(dev);
int data, vsel, ldo = rdev_get_id(dev); int data, vsel, ldo = rdev_get_id(dev);
int ret;
if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2) if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2)
return -EINVAL; return -EINVAL;
...@@ -377,13 +354,13 @@ static int tps65023_ldo_set_voltage(struct regulator_dev *dev, ...@@ -377,13 +354,13 @@ static int tps65023_ldo_set_voltage(struct regulator_dev *dev,
*selector = vsel; *selector = vsel;
data = tps_65023_reg_read(tps, TPS65023_REG_LDO_CTRL); ret = regmap_read(tps->regmap, TPS65023_REG_LDO_CTRL, &data);
if (data < 0) if (ret != 0)
return data; return ret;
data &= TPS65023_LDO_CTRL_LDOx_MASK(ldo - TPS65023_LDO_1); data &= TPS65023_LDO_CTRL_LDOx_MASK(ldo - TPS65023_LDO_1);
data |= (vsel << (TPS65023_LDO_CTRL_LDOx_SHIFT(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, static int tps65023_dcdc_list_voltage(struct regulator_dev *dev,
...@@ -511,12 +488,12 @@ static int __devinit tps_65023_probe(struct i2c_client *client, ...@@ -511,12 +488,12 @@ static int __devinit tps_65023_probe(struct i2c_client *client,
i2c_set_clientdata(client, tps); i2c_set_clientdata(client, tps);
/* Enable setting output voltage by I2C */ /* Enable setting output voltage by I2C */
tps_65023_clear_bits(tps, TPS65023_REG_CON_CTRL2, regmap_update_bits(tps->regmap, TPS65023_REG_CON_CTRL2,
TPS65023_REG_CTRL2_CORE_ADJ); TPS65023_REG_CTRL2_CORE_ADJ, TPS65023_REG_CTRL2_CORE_ADJ);
/* Enable setting output voltage by I2C */ /* Enable setting output voltage by I2C */
tps_65023_clear_bits(tps, TPS65023_REG_CON_CTRL2, regmap_update_bits(tps->regmap, TPS65023_REG_CON_CTRL2,
TPS65023_REG_CTRL2_CORE_ADJ); TPS65023_REG_CTRL2_CORE_ADJ, TPS65023_REG_CTRL2_CORE_ADJ);
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment