[RFC PATCH 14/15] regulator: pwm: implement ->enable(), ->disable() and ->is_enabled methods
From: Boris Brezillon <hidden>
Date: 2015-07-01 12:05:31
Also in:
linux-fbdev, linux-leds, linux-pwm, linux-tegra
Hi Heiko, On Wed, 01 Jul 2015 13:58:09 +0200 Heiko St?bner [off-list ref] wrote:
Am Mittwoch, 1. Juli 2015, 10:22:00 schrieb Boris Brezillon:quoted
Implement the ->enable(), ->disable() and ->is_enabled methods and remove the PWM call in ->set_voltage_sel(). This is particularly important for critical regulators tagged as always-on, because not claiming the PWM (and its dependencies) might lead to unpredictable behavior (like a system hang because the PWM clk is only claimed when the PWM device is enabled). Signed-off-by: Boris Brezillon <redacted> --- drivers/regulator/pwm-regulator.c | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-)diff --git a/drivers/regulator/pwm-regulator.cb/drivers/regulator/pwm-regulator.c index 12b4d9d..8159518 100644--- a/drivers/regulator/pwm-regulator.c +++ b/drivers/regulator/pwm-regulator.c@@ -59,12 +59,6 @@ static int pwm_regulator_set_voltage_sel(structregulator_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; }@@ -79,11 +73,37 @@ static int pwm_regulator_list_voltage(structregulator_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); +}nit: indentation is wrong in pwm_regulator_is_enabled (spaces instead of tabs)
Yep, I noticed checkpatch warnings/errors before sending the patch, but since this is just an RFC I decided to fix them for the next version ;-) Best Regards, Boris -- Boris Brezillon, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com