Merge remote-tracking branch 'regulator/topic/tps65023' into v3.9-rc8
This commit is contained in:
commit
813dc1b086
1 changed files with 9 additions and 22 deletions
|
@ -149,20 +149,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,
|
||||||
|
@ -170,23 +165,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 */
|
||||||
|
@ -282,6 +265,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;
|
||||||
|
|
Loading…
Add table
Reference in a new issue