summaryrefslogtreecommitdiffstats
path: root/drivers/video/backlight-pwm.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2015-09-23 13:42:00 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2015-10-01 08:26:08 +0200
commit65894735e620b5f94aaafb125f3e48893ea5f51f (patch)
treebbac235a016ea657b8002e4f367d6c3788446fda /drivers/video/backlight-pwm.c
parent7bc30c827603ef0c070ca2ccc29146fff70928da (diff)
downloadbarebox-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.c13
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;