diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2015-09-23 13:42:00 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2015-10-01 08:26:08 +0200 |
commit | 65894735e620b5f94aaafb125f3e48893ea5f51f (patch) | |
tree | bbac235a016ea657b8002e4f367d6c3788446fda /drivers/video/backlight-pwm.c | |
parent | 7bc30c827603ef0c070ca2ccc29146fff70928da (diff) | |
download | barebox-65894735e620b5f94aaafb125f3e48893ea5f51f.tar.gz barebox-65894735e620b5f94aaafb125f3e48893ea5f51f.tar.xz |
video: backlight-pwm: Add regulator support
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/video/backlight-pwm.c')
-rw-r--r-- | drivers/video/backlight-pwm.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/video/backlight-pwm.c b/drivers/video/backlight-pwm.c index 8f17f21d79..ba6f9bcb41 100644 --- a/drivers/video/backlight-pwm.c +++ b/drivers/video/backlight-pwm.c @@ -24,6 +24,7 @@ #include <pwm.h> #include <linux/err.h> #include <of.h> +#include <regulator.h> #include <gpio.h> #include <of_gpio.h> #include <asm-generic/div64.h> @@ -31,6 +32,7 @@ struct pwm_backlight { struct backlight_device backlight; struct pwm_device *pwm; + struct regulator *power; uint32_t period; unsigned int *levels; int enable_gpio; @@ -50,6 +52,8 @@ static int backlight_pwm_enable(struct pwm_backlight *pwm_backlight) if (ret) return ret; + regulator_enable(pwm_backlight->power); + if (gpio_is_valid(pwm_backlight->enable_gpio)) { gpio_direction_output(pwm_backlight->enable_gpio, pwm_backlight->enable_active_high); @@ -68,6 +72,9 @@ static int backlight_pwm_disable(struct pwm_backlight *pwm_backlight) if (gpio_is_valid(pwm_backlight->enable_gpio)) { gpio_direction_output(pwm_backlight->enable_gpio, !pwm_backlight->enable_active_high); + + regulator_disable(pwm_backlight->power); + /* * Only disable PWM when an enable gpio is present. * The output of the PWM is undefined when the PWM @@ -173,6 +180,12 @@ static int backlight_pwm_of_probe(struct device_d *dev) if (ret) return ret; + pwm_backlight->power = regulator_get(dev, "power"); + if (IS_ERR(pwm_backlight->power)) { + dev_err(dev, "Cannot find regulator\n"); + return PTR_ERR(pwm_backlight->power); + } + pwm_backlight->period = pwm_get_period(pwm_backlight->pwm); pwm_backlight->backlight.brightness_set = backlight_pwm_set; |