Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 302237
b: refs/heads/master
c: 62bc4d4
h: refs/heads/master
i:
  302235: 571a612
v: v3
  • Loading branch information
Axel Lin authored and Mark Brown committed Apr 17, 2012
1 parent afd586e commit cc780bc
Show file tree
Hide file tree
Showing 2 changed files with 43 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: 9e96b3a7ade72cb66b95f2ad3c849bab702ed87b
refs/heads/master: 62bc4d4a702654cf5aefbb32c766991fb45bf15a
55 changes: 42 additions & 13 deletions trunk/drivers/regulator/max8997.c
Original file line number Diff line number Diff line change
Expand Up @@ -489,9 +489,7 @@ static int max8997_set_voltage_ldobuck(struct regulator_dev *rdev,
int min_vol = min_uV / 1000, max_vol = max_uV / 1000;
const struct voltage_map_desc *desc;
int rid = rdev_get_id(rdev);
int reg, shift = 0, mask, ret;
int i;
u8 org;
int i, reg, shift, mask, ret;

switch (rid) {
case MAX8997_LDO1 ... MAX8997_LDO21:
Expand Down Expand Up @@ -520,21 +518,50 @@ static int max8997_set_voltage_ldobuck(struct regulator_dev *rdev,
if (ret)
return ret;

max8997_read_reg(i2c, reg, &org);
org = (org & mask) >> shift;

ret = max8997_update_reg(i2c, reg, i << shift, mask << shift);
*selector = i;

if (rid == MAX8997_BUCK1 || rid == MAX8997_BUCK2 ||
rid == MAX8997_BUCK4 || rid == MAX8997_BUCK5) {
/* If the voltage is increasing */
if (org < i)
udelay(DIV_ROUND_UP(desc->step * (i - org),
max8997->ramp_delay));
return ret;
}

static int max8997_set_voltage_ldobuck_time_sel(struct regulator_dev *rdev,
unsigned int old_selector,
unsigned int new_selector)
{
struct max8997_data *max8997 = rdev_get_drvdata(rdev);
int rid = rdev_get_id(rdev);
const struct voltage_map_desc *desc = reg_voltage_map[rid];

/* Delay is required only if the voltage is increasing */
if (old_selector >= new_selector)
return 0;

/* No need to delay if gpio_dvs_mode */
switch (rid) {
case MAX8997_BUCK1:
if (max8997->buck1_gpiodvs)
return 0;
break;
case MAX8997_BUCK2:
if (max8997->buck2_gpiodvs)
return 0;
break;
case MAX8997_BUCK5:
if (max8997->buck5_gpiodvs)
return 0;
break;
}

switch (rid) {
case MAX8997_BUCK1:
case MAX8997_BUCK2:
case MAX8997_BUCK4:
case MAX8997_BUCK5:
return DIV_ROUND_UP(desc->step * (new_selector - old_selector),
max8997->ramp_delay);
}

return ret;
return 0;
}

/*
Expand Down Expand Up @@ -780,6 +807,7 @@ static struct regulator_ops max8997_ldo_ops = {
.disable = max8997_reg_disable,
.get_voltage_sel = max8997_get_voltage_sel,
.set_voltage = max8997_set_voltage_ldobuck,
.set_voltage_time_sel = max8997_set_voltage_ldobuck_time_sel,
.set_suspend_enable = max8997_reg_enable_suspend,
.set_suspend_disable = max8997_reg_disable_suspend,
};
Expand All @@ -791,6 +819,7 @@ static struct regulator_ops max8997_buck_ops = {
.disable = max8997_reg_disable,
.get_voltage_sel = max8997_get_voltage_sel,
.set_voltage = max8997_set_voltage_buck,
.set_voltage_time_sel = max8997_set_voltage_ldobuck_time_sel,
.set_suspend_enable = max8997_reg_enable_suspend,
.set_suspend_disable = max8997_reg_disable_suspend,
};
Expand Down

0 comments on commit cc780bc

Please sign in to comment.