Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 220622
b: refs/heads/master
c: 9d92492
h: refs/heads/master
v: v3
  • Loading branch information
Lukasz Majewski authored and Samuel Ortiz committed Oct 28, 2010
1 parent efbc7c2 commit 91400bd
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 4 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: 8e52e279b241d3a22d52c10a5f934db18b7d0a1b
refs/heads/master: 9d92492fb753f01caa31dc502f69c189c0c22ad0
43 changes: 40 additions & 3 deletions trunk/drivers/regulator/max8998.c
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,44 @@ static int max8998_get_voltage(struct regulator_dev *rdev)
return max8998_list_voltage(rdev, val);
}

static int max8998_set_voltage(struct regulator_dev *rdev,
static int max8998_set_voltage_ldo(struct regulator_dev *rdev,
int min_uV, int max_uV)
{
struct max8998_data *max8998 = rdev_get_drvdata(rdev);
struct i2c_client *i2c = max8998->iodev->i2c;
int min_vol = min_uV / 1000, max_vol = max_uV / 1000;
const struct voltage_map_desc *desc;
int ldo = max8998_get_ldo(rdev);
int reg, shift = 0, mask, ret;
int i = 0;

if (ldo >= ARRAY_SIZE(ldo_voltage_map))
return -EINVAL;

desc = ldo_voltage_map[ldo];
if (desc == NULL)
return -EINVAL;

if (max_vol < desc->min || min_vol > desc->max)
return -EINVAL;

while (desc->min + desc->step*i < min_vol &&
desc->min + desc->step*i < desc->max)
i++;

if (desc->min + desc->step*i > max_vol)
return -EINVAL;

ret = max8998_get_voltage_register(rdev, &reg, &shift, &mask);
if (ret)
return ret;

ret = max8998_update_reg(i2c, reg, i<<shift, mask<<shift);

return ret;
}

static int max8998_set_voltage_buck(struct regulator_dev *rdev,
int min_uV, int max_uV)
{
struct max8998_data *max8998 = rdev_get_drvdata(rdev);
Expand Down Expand Up @@ -359,7 +396,7 @@ static struct regulator_ops max8998_ldo_ops = {
.enable = max8998_ldo_enable,
.disable = max8998_ldo_disable,
.get_voltage = max8998_get_voltage,
.set_voltage = max8998_set_voltage,
.set_voltage = max8998_set_voltage_ldo,
.set_suspend_enable = max8998_ldo_enable,
.set_suspend_disable = max8998_ldo_disable,
};
Expand All @@ -370,7 +407,7 @@ static struct regulator_ops max8998_buck_ops = {
.enable = max8998_ldo_enable,
.disable = max8998_ldo_disable,
.get_voltage = max8998_get_voltage,
.set_voltage = max8998_set_voltage,
.set_voltage = max8998_set_voltage_buck,
.set_suspend_enable = max8998_ldo_enable,
.set_suspend_disable = max8998_ldo_disable,
};
Expand Down

0 comments on commit 91400bd

Please sign in to comment.