|
@@ -69,12 +69,6 @@ static int pwm_regulator_set_voltage_sel(struct regulator_dev *rdev,
|
|
|
|
|
|
drvdata->state = selector;
|
|
|
|
|
|
- ret = pwm_enable(drvdata->pwm);
|
|
|
- if (ret) {
|
|
|
- dev_err(&rdev->dev, "Failed to enable PWM\n");
|
|
|
- return ret;
|
|
|
- }
|
|
|
-
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -89,6 +83,29 @@ static int pwm_regulator_list_voltage(struct regulator_dev *rdev,
|
|
|
return drvdata->duty_cycle_table[selector].uV;
|
|
|
}
|
|
|
|
|
|
+static int pwm_regulator_enable(struct regulator_dev *dev)
|
|
|
+{
|
|
|
+ struct pwm_regulator_data *drvdata = rdev_get_drvdata(dev);
|
|
|
+
|
|
|
+ return pwm_enable(drvdata->pwm);
|
|
|
+}
|
|
|
+
|
|
|
+static int pwm_regulator_disable(struct regulator_dev *dev)
|
|
|
+{
|
|
|
+ struct pwm_regulator_data *drvdata = rdev_get_drvdata(dev);
|
|
|
+
|
|
|
+ pwm_disable(drvdata->pwm);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static int pwm_regulator_is_enabled(struct regulator_dev *dev)
|
|
|
+{
|
|
|
+ struct pwm_regulator_data *drvdata = rdev_get_drvdata(dev);
|
|
|
+
|
|
|
+ return pwm_is_enabled(drvdata->pwm);
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* Continuous voltage call-backs
|
|
|
*/
|
|
@@ -144,11 +161,17 @@ static struct regulator_ops pwm_regulator_voltage_table_ops = {
|
|
|
.get_voltage_sel = pwm_regulator_get_voltage_sel,
|
|
|
.list_voltage = pwm_regulator_list_voltage,
|
|
|
.map_voltage = regulator_map_voltage_iterate,
|
|
|
+ .enable = pwm_regulator_enable,
|
|
|
+ .disable = pwm_regulator_disable,
|
|
|
+ .is_enabled = pwm_regulator_is_enabled,
|
|
|
};
|
|
|
|
|
|
static struct regulator_ops pwm_regulator_voltage_continuous_ops = {
|
|
|
.get_voltage = pwm_regulator_get_voltage,
|
|
|
.set_voltage = pwm_regulator_set_voltage,
|
|
|
+ .enable = pwm_regulator_enable,
|
|
|
+ .disable = pwm_regulator_disable,
|
|
|
+ .is_enabled = pwm_regulator_is_enabled,
|
|
|
};
|
|
|
|
|
|
static struct regulator_desc pwm_regulator_desc = {
|