Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 302289
b: refs/heads/master
c: 817d8c2
h: refs/heads/master
i:
  302287: c70fdd8
v: v3
  • Loading branch information
Axel Lin authored and Mark Brown committed May 14, 2012
1 parent 4ee031d commit 337c897
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 30 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: 0f65402b2593cae129dcdb67f6ad79d5dc2ac017
refs/heads/master: 817d8c2d9bd52bcfad292ae940b1e4083be62958
45 changes: 16 additions & 29 deletions trunk/drivers/regulator/max8649.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ struct max8649_regulator_info {
struct device *dev;
struct regmap *regmap;

int vol_reg;
unsigned mode:2; /* bit[1:0] = VID1, VID0 */
unsigned extclk_freq:2;
unsigned extclk:1;
Expand All @@ -76,20 +75,6 @@ static int max8649_list_voltage(struct regulator_dev *rdev, unsigned index)
return (MAX8649_DCDC_VMIN + index * MAX8649_DCDC_STEP);
}

static int max8649_get_voltage_sel(struct regulator_dev *rdev)
{
struct max8649_regulator_info *info = rdev_get_drvdata(rdev);
unsigned int val;
unsigned char data;
int ret;

ret = regmap_read(info->regmap, info->vol_reg, &val);
if (ret != 0)
return ret;
data = (unsigned char)val & MAX8649_VOL_MASK;
return data;
}

static int max8649_set_voltage(struct regulator_dev *rdev,
int min_uV, int max_uV, unsigned *selector)
{
Expand All @@ -105,7 +90,8 @@ static int max8649_set_voltage(struct regulator_dev *rdev,
mask = MAX8649_VOL_MASK;
*selector = data & mask;

return regmap_update_bits(info->regmap, info->vol_reg, mask, data);
return regmap_update_bits(info->regmap, rdev->desc->vsel_reg, mask,
data);
}

/* EN_PD means pulldown on EN input */
Expand Down Expand Up @@ -145,7 +131,7 @@ static int max8649_enable_time(struct regulator_dev *rdev)
unsigned int val;

/* get voltage */
ret = regmap_read(info->regmap, info->vol_reg, &val);
ret = regmap_read(info->regmap, rdev->desc->vsel_reg, &val);
if (ret != 0)
return ret;
val &= MAX8649_VOL_MASK;
Expand All @@ -167,11 +153,11 @@ static int max8649_set_mode(struct regulator_dev *rdev, unsigned int mode)

switch (mode) {
case REGULATOR_MODE_FAST:
regmap_update_bits(info->regmap, info->vol_reg, MAX8649_FORCE_PWM,
MAX8649_FORCE_PWM);
regmap_update_bits(info->regmap, rdev->desc->vsel_reg,
MAX8649_FORCE_PWM, MAX8649_FORCE_PWM);
break;
case REGULATOR_MODE_NORMAL:
regmap_update_bits(info->regmap, info->vol_reg,
regmap_update_bits(info->regmap, rdev->desc->vsel_reg,
MAX8649_FORCE_PWM, 0);
break;
default:
Expand All @@ -186,7 +172,7 @@ static unsigned int max8649_get_mode(struct regulator_dev *rdev)
unsigned int val;
int ret;

ret = regmap_read(info->regmap, info->vol_reg, &val);
ret = regmap_read(info->regmap, rdev->desc->vsel_reg, &val);
if (ret != 0)
return ret;
if (val & MAX8649_FORCE_PWM)
Expand All @@ -196,7 +182,7 @@ static unsigned int max8649_get_mode(struct regulator_dev *rdev)

static struct regulator_ops max8649_dcdc_ops = {
.set_voltage = max8649_set_voltage,
.get_voltage_sel = max8649_get_voltage_sel,
.get_voltage_sel = regulator_get_voltage_sel_regmap,
.list_voltage = max8649_list_voltage,
.enable = max8649_enable,
.disable = max8649_disable,
Expand All @@ -207,12 +193,13 @@ static struct regulator_ops max8649_dcdc_ops = {

};

static const struct regulator_desc dcdc_desc = {
static struct regulator_desc dcdc_desc = {
.name = "max8649",
.ops = &max8649_dcdc_ops,
.type = REGULATOR_VOLTAGE,
.n_voltages = 1 << 6,
.owner = THIS_MODULE,
.vsel_mask = MAX8649_VOL_MASK,
};

static struct regmap_config max8649_regmap_config = {
Expand Down Expand Up @@ -250,16 +237,16 @@ static int __devinit max8649_regulator_probe(struct i2c_client *client,
info->mode = pdata->mode;
switch (info->mode) {
case 0:
info->vol_reg = MAX8649_MODE0;
dcdc_desc.vsel_reg = MAX8649_MODE0;
break;
case 1:
info->vol_reg = MAX8649_MODE1;
dcdc_desc.vsel_reg = MAX8649_MODE1;
break;
case 2:
info->vol_reg = MAX8649_MODE2;
dcdc_desc.vsel_reg = MAX8649_MODE2;
break;
case 3:
info->vol_reg = MAX8649_MODE3;
dcdc_desc.vsel_reg = MAX8649_MODE3;
break;
default:
break;
Expand All @@ -279,7 +266,8 @@ static int __devinit max8649_regulator_probe(struct i2c_client *client,
/* enable/disable external clock synchronization */
info->extclk = pdata->extclk;
data = (info->extclk) ? MAX8649_SYNC_EXTCLK : 0;
regmap_update_bits(info->regmap, info->vol_reg, MAX8649_SYNC_EXTCLK, data);
regmap_update_bits(info->regmap, dcdc_desc.vsel_reg,
MAX8649_SYNC_EXTCLK, data);
if (info->extclk) {
/* set external clock frequency */
info->extclk_freq = pdata->extclk_freq;
Expand Down Expand Up @@ -356,4 +344,3 @@ module_exit(max8649_exit);
MODULE_DESCRIPTION("MAXIM 8649 voltage regulator driver");
MODULE_AUTHOR("Haojian Zhuang <haojian.zhuang@marvell.com>");
MODULE_LICENSE("GPL");

0 comments on commit 337c897

Please sign in to comment.