Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 302305
b: refs/heads/master
c: 4923b48
h: refs/heads/master
i:
  302303: b7e9496
v: v3
  • Loading branch information
Axel Lin authored and Mark Brown committed May 16, 2012
1 parent 24569d6 commit 8549730
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 14 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 372de4aa5e27af81ac4ce3b7be264e36a1d70a01
refs/heads/master: 4923b48b27fc89710ebc8b77fe0dd679724c0ffc
37 changes: 24 additions & 13 deletions trunk/drivers/regulator/da9052-regulator.c
Original file line number Diff line number Diff line change
Expand Up @@ -179,14 +179,13 @@ static int da9052_list_voltage(struct regulator_dev *rdev,
return volt_uV;
}

static int da9052_regulator_set_voltage(struct regulator_dev *rdev,
int min_uV, int max_uV,
unsigned int *selector)
static int da9052_map_voltage(struct regulator_dev *rdev,
int min_uV, int max_uV)
{
struct da9052_regulator *regulator = rdev_get_drvdata(rdev);
struct da9052_regulator_info *info = regulator->info;
int id = rdev_get_id(rdev);
int ret;
int ret, sel;

ret = verify_range(info, min_uV, max_uV);
if (ret < 0)
Expand All @@ -197,19 +196,30 @@ static int da9052_regulator_set_voltage(struct regulator_dev *rdev,

if ((id == DA9052_ID_BUCK4) && (regulator->da9052->chip_id == DA9052)
&& (min_uV >= DA9052_CONST_3uV)) {
*selector = DA9052_BUCK_PERI_REG_MAP_UPTO_3uV +
DIV_ROUND_UP(min_uV - DA9052_CONST_3uV,
DA9052_BUCK_PERI_3uV_STEP);
sel = DA9052_BUCK_PERI_REG_MAP_UPTO_3uV +
DIV_ROUND_UP(min_uV - DA9052_CONST_3uV,
DA9052_BUCK_PERI_3uV_STEP);
} else {
*selector = DIV_ROUND_UP(min_uV - info->min_uV, info->step_uV);
sel = DIV_ROUND_UP(min_uV - info->min_uV, info->step_uV);
}

ret = da9052_list_voltage(rdev, *selector);
ret = da9052_list_voltage(rdev, sel);
if (ret < 0)
return ret;

return sel;
}

static int da9052_regulator_set_voltage_sel(struct regulator_dev *rdev,
unsigned int selector)
{
struct da9052_regulator *regulator = rdev_get_drvdata(rdev);
struct da9052_regulator_info *info = regulator->info;
int id = rdev_get_id(rdev);
int ret;

ret = da9052_reg_update(regulator->da9052, rdev->desc->vsel_reg,
rdev->desc->vsel_mask, *selector);
rdev->desc->vsel_mask, selector);
if (ret < 0)
return ret;

Expand All @@ -231,22 +241,23 @@ static int da9052_regulator_set_voltage(struct regulator_dev *rdev,
}

static struct regulator_ops da9052_dcdc_ops = {
.set_voltage = da9052_regulator_set_voltage,
.get_current_limit = da9052_dcdc_get_current_limit,
.set_current_limit = da9052_dcdc_set_current_limit,

.list_voltage = da9052_list_voltage,
.map_voltage = da9052_map_voltage,
.get_voltage_sel = regulator_get_voltage_sel_regmap,
.set_voltage_sel = da9052_regulator_set_voltage_sel,
.is_enabled = regulator_is_enabled_regmap,
.enable = regulator_enable_regmap,
.disable = regulator_disable_regmap,
};

static struct regulator_ops da9052_ldo_ops = {
.set_voltage = da9052_regulator_set_voltage,

.list_voltage = da9052_list_voltage,
.map_voltage = da9052_map_voltage,
.get_voltage_sel = regulator_get_voltage_sel_regmap,
.set_voltage_sel = da9052_regulator_set_voltage_sel,
.is_enabled = regulator_is_enabled_regmap,
.enable = regulator_enable_regmap,
.disable = regulator_disable_regmap,
Expand Down

0 comments on commit 8549730

Please sign in to comment.