提交 46bcb006 编写于 作者: A Axel Lin 提交者: Mark Brown

regulator: tps65023: Use [set|get]_voltage_sel_regmap instead of open coded

Simply the [get|set]_voltage_sel implementation by using
regulator_[set|get]_voltage_sel_regmap instead of open coded.
Signed-off-by: NAxel Lin <axel.lin@ingics.com>
Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
上级 60d509fa
...@@ -154,20 +154,15 @@ struct tps_driver_data { ...@@ -154,20 +154,15 @@ struct tps_driver_data {
static int tps65023_dcdc_get_voltage_sel(struct regulator_dev *dev) static int tps65023_dcdc_get_voltage_sel(struct regulator_dev *dev)
{ {
struct tps_pmic *tps = rdev_get_drvdata(dev); struct tps_pmic *tps = rdev_get_drvdata(dev);
int ret; int 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)
ret = regmap_read(tps->regmap, TPS65023_REG_DEF_CORE, &data);
if (ret != 0)
return ret;
data &= (tps->info[dcdc]->table_len - 1);
return data;
} else
return 0; return 0;
return regulator_get_voltage_sel_regmap(dev);
} }
static int tps65023_dcdc_set_voltage_sel(struct regulator_dev *dev, static int tps65023_dcdc_set_voltage_sel(struct regulator_dev *dev,
...@@ -175,23 +170,11 @@ static int tps65023_dcdc_set_voltage_sel(struct regulator_dev *dev, ...@@ -175,23 +170,11 @@ static int tps65023_dcdc_set_voltage_sel(struct regulator_dev *dev,
{ {
struct tps_pmic *tps = rdev_get_drvdata(dev); struct tps_pmic *tps = rdev_get_drvdata(dev);
int dcdc = rdev_get_id(dev); int dcdc = rdev_get_id(dev);
int ret;
if (dcdc != tps->core_regulator) if (dcdc != tps->core_regulator)
return -EINVAL; return -EINVAL;
ret = regmap_write(tps->regmap, TPS65023_REG_DEF_CORE, selector); return regulator_set_voltage_sel_regmap(dev, selector);
if (ret)
goto out;
/* Tell the chip that we have changed the value in DEFCORE
* and its time to update the core voltage
*/
ret = regmap_update_bits(tps->regmap, TPS65023_REG_CON_CTRL2,
TPS65023_REG_CTRL2_GO, TPS65023_REG_CTRL2_GO);
out:
return ret;
} }
/* Operations permitted on VDCDCx */ /* Operations permitted on VDCDCx */
...@@ -285,6 +268,10 @@ static int tps_65023_probe(struct i2c_client *client, ...@@ -285,6 +268,10 @@ static int tps_65023_probe(struct i2c_client *client,
default: /* DCDCx */ default: /* DCDCx */
tps->desc[i].enable_mask = tps->desc[i].enable_mask =
1 << (TPS65023_NUM_REGULATOR - i); 1 << (TPS65023_NUM_REGULATOR - i);
tps->desc[i].vsel_reg = TPS65023_REG_DEF_CORE;
tps->desc[i].vsel_mask = info->table_len - 1;
tps->desc[i].apply_reg = TPS65023_REG_CON_CTRL2;
tps->desc[i].apply_bit = TPS65023_REG_CTRL2_GO;
} }
config.dev = &client->dev; config.dev = &client->dev;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册