aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan Hovold <jhovold@gmail.com>2013-11-12 18:09:45 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2013-11-12 22:09:21 -0500
commit81b62db56dbdfef8f3b596dc2845df7ee3ab2165 (patch)
treed035c19baa65faeda0c3bbac854250a986ad7f6d
parent5ada4550e86b081b889bced50e5ab6c510f9cdd7 (diff)
backlight: atmel-pwm-bl: refactor gpio_on handling
Add helper function to control the gpio_on signal. Signed-off-by: Johan Hovold <jhovold@gmail.com> Acked-by: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--drivers/video/backlight/atmel-pwm-bl.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/drivers/video/backlight/atmel-pwm-bl.c b/drivers/video/backlight/atmel-pwm-bl.c
index c2542095a04c..bd1ed342f87a 100644
--- a/drivers/video/backlight/atmel-pwm-bl.c
+++ b/drivers/video/backlight/atmel-pwm-bl.c
@@ -26,6 +26,14 @@ struct atmel_pwm_bl {
26 int gpio_on; 26 int gpio_on;
27}; 27};
28 28
29static void atmel_pwm_bl_set_gpio_on(struct atmel_pwm_bl *pwmbl, int on)
30{
31 if (!gpio_is_valid(pwmbl->gpio_on))
32 return;
33
34 gpio_set_value(pwmbl->gpio_on, on ^ pwmbl->pdata->on_active_low);
35}
36
29static int atmel_pwm_bl_set_intensity(struct backlight_device *bd) 37static int atmel_pwm_bl_set_intensity(struct backlight_device *bd)
30{ 38{
31 struct atmel_pwm_bl *pwmbl = bl_get_data(bd); 39 struct atmel_pwm_bl *pwmbl = bl_get_data(bd);
@@ -48,19 +56,13 @@ static int atmel_pwm_bl_set_intensity(struct backlight_device *bd)
48 pwm_duty = pwmbl->pdata->pwm_duty_min; 56 pwm_duty = pwmbl->pdata->pwm_duty_min;
49 57
50 if (!intensity) { 58 if (!intensity) {
51 if (gpio_is_valid(pwmbl->gpio_on)) { 59 atmel_pwm_bl_set_gpio_on(pwmbl, 0);
52 gpio_set_value(pwmbl->gpio_on,
53 0 ^ pwmbl->pdata->on_active_low);
54 }
55 pwm_channel_writel(&pwmbl->pwmc, PWM_CUPD, pwm_duty); 60 pwm_channel_writel(&pwmbl->pwmc, PWM_CUPD, pwm_duty);
56 pwm_channel_disable(&pwmbl->pwmc); 61 pwm_channel_disable(&pwmbl->pwmc);
57 } else { 62 } else {
58 pwm_channel_enable(&pwmbl->pwmc); 63 pwm_channel_enable(&pwmbl->pwmc);
59 pwm_channel_writel(&pwmbl->pwmc, PWM_CUPD, pwm_duty); 64 pwm_channel_writel(&pwmbl->pwmc, PWM_CUPD, pwm_duty);
60 if (gpio_is_valid(pwmbl->gpio_on)) { 65 atmel_pwm_bl_set_gpio_on(pwmbl, 1);
61 gpio_set_value(pwmbl->gpio_on,
62 1 ^ pwmbl->pdata->on_active_low);
63 }
64 } 66 }
65 67
66 return 0; 68 return 0;
@@ -196,10 +198,7 @@ static int atmel_pwm_bl_remove(struct platform_device *pdev)
196{ 198{
197 struct atmel_pwm_bl *pwmbl = platform_get_drvdata(pdev); 199 struct atmel_pwm_bl *pwmbl = platform_get_drvdata(pdev);
198 200
199 if (gpio_is_valid(pwmbl->gpio_on)) { 201 atmel_pwm_bl_set_gpio_on(pwmbl, 0);
200 gpio_set_value(pwmbl->gpio_on,
201 0 ^ pwmbl->pdata->on_active_low);
202 }
203 pwm_channel_disable(&pwmbl->pwmc); 202 pwm_channel_disable(&pwmbl->pwmc);
204 pwm_channel_free(&pwmbl->pwmc); 203 pwm_channel_free(&pwmbl->pwmc);
205 204