Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 312622
b: refs/heads/master
c: b669e0a
h: refs/heads/master
v: v3
  • Loading branch information
Axel Lin authored and Mark Brown committed Jul 10, 2012
1 parent bd73ba0 commit 39dadaf
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 56 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: aa851193bdf140c85b660c2a070e53316ad2a4d3
refs/heads/master: b669e0adb9f667acff16162ea0ff4fc404495b3c
59 changes: 4 additions & 55 deletions trunk/drivers/regulator/max8952.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ struct max8952_data {

bool vid0;
bool vid1;
bool en;
};

static int max8952_read_reg(struct max8952_data *max8952, u8 reg)
Expand Down Expand Up @@ -80,38 +79,6 @@ static int max8952_list_voltage(struct regulator_dev *rdev,
return (max8952->pdata->dvs_mode[selector] * 10 + 770) * 1000;
}

static int max8952_is_enabled(struct regulator_dev *rdev)
{
struct max8952_data *max8952 = rdev_get_drvdata(rdev);
return max8952->en;
}

static int max8952_enable(struct regulator_dev *rdev)
{
struct max8952_data *max8952 = rdev_get_drvdata(rdev);

/* If not valid, assume "ALWAYS_HIGH" */
if (gpio_is_valid(max8952->pdata->gpio_en))
gpio_set_value(max8952->pdata->gpio_en, 1);

max8952->en = true;
return 0;
}

static int max8952_disable(struct regulator_dev *rdev)
{
struct max8952_data *max8952 = rdev_get_drvdata(rdev);

/* If not valid, assume "ALWAYS_HIGH" -> not permitted */
if (gpio_is_valid(max8952->pdata->gpio_en))
gpio_set_value(max8952->pdata->gpio_en, 0);
else
return -EPERM;

max8952->en = false;
return 0;
}

static int max8952_get_voltage_sel(struct regulator_dev *rdev)
{
struct max8952_data *max8952 = rdev_get_drvdata(rdev);
Expand Down Expand Up @@ -146,9 +113,6 @@ static int max8952_set_voltage_sel(struct regulator_dev *rdev,

static struct regulator_ops max8952_ops = {
.list_voltage = max8952_list_voltage,
.is_enabled = max8952_is_enabled,
.enable = max8952_enable,
.disable = max8952_disable,
.get_voltage_sel = max8952_get_voltage_sel,
.set_voltage_sel = max8952_set_voltage_sel,
};
Expand Down Expand Up @@ -193,6 +157,10 @@ static int __devinit max8952_pmic_probe(struct i2c_client *client,
config.init_data = &pdata->reg_data;
config.driver_data = max8952;

config.ena_gpio = pdata->gpio_en;
if (pdata->reg_data.constraints.boot_on)
config.ena_gpio_flags |= GPIOF_OUT_INIT_HIGH;

max8952->rdev = regulator_register(&regulator, &config);

if (IS_ERR(max8952->rdev)) {
Expand All @@ -201,27 +169,9 @@ static int __devinit max8952_pmic_probe(struct i2c_client *client,
return ret;
}

max8952->en = !!(pdata->reg_data.constraints.boot_on);
max8952->vid0 = pdata->default_mode & 0x1;
max8952->vid1 = (pdata->default_mode >> 1) & 0x1;

if (gpio_is_valid(pdata->gpio_en)) {
if (!gpio_request(pdata->gpio_en, "MAX8952 EN"))
gpio_direction_output(pdata->gpio_en, max8952->en);
else
err = 1;
} else
err = 2;

if (err) {
dev_info(max8952->dev, "EN gpio invalid: assume that EN"
"is always High\n");
max8952->en = 1;
pdata->gpio_en = -1; /* Mark invalid */
}

err = 0;

if (gpio_is_valid(pdata->gpio_vid0) &&
gpio_is_valid(pdata->gpio_vid1)) {
if (!gpio_request(pdata->gpio_vid0, "MAX8952 VID0"))
Expand Down Expand Up @@ -307,7 +257,6 @@ static int __devexit max8952_pmic_remove(struct i2c_client *client)

gpio_free(pdata->gpio_vid0);
gpio_free(pdata->gpio_vid1);
gpio_free(pdata->gpio_en);
return 0;
}

Expand Down

0 comments on commit 39dadaf

Please sign in to comment.