|
@@ -26,6 +26,14 @@ struct atmel_pwm_bl {
|
|
|
int gpio_on;
|
|
|
};
|
|
|
|
|
|
+static void atmel_pwm_bl_set_gpio_on(struct atmel_pwm_bl *pwmbl, int on)
|
|
|
+{
|
|
|
+ if (!gpio_is_valid(pwmbl->gpio_on))
|
|
|
+ return;
|
|
|
+
|
|
|
+ gpio_set_value(pwmbl->gpio_on, on ^ pwmbl->pdata->on_active_low);
|
|
|
+}
|
|
|
+
|
|
|
static int atmel_pwm_bl_set_intensity(struct backlight_device *bd)
|
|
|
{
|
|
|
struct atmel_pwm_bl *pwmbl = bl_get_data(bd);
|
|
@@ -48,19 +56,13 @@ static int atmel_pwm_bl_set_intensity(struct backlight_device *bd)
|
|
|
pwm_duty = pwmbl->pdata->pwm_duty_min;
|
|
|
|
|
|
if (!intensity) {
|
|
|
- if (gpio_is_valid(pwmbl->gpio_on)) {
|
|
|
- gpio_set_value(pwmbl->gpio_on,
|
|
|
- 0 ^ pwmbl->pdata->on_active_low);
|
|
|
- }
|
|
|
+ atmel_pwm_bl_set_gpio_on(pwmbl, 0);
|
|
|
pwm_channel_writel(&pwmbl->pwmc, PWM_CUPD, pwm_duty);
|
|
|
pwm_channel_disable(&pwmbl->pwmc);
|
|
|
} else {
|
|
|
pwm_channel_enable(&pwmbl->pwmc);
|
|
|
pwm_channel_writel(&pwmbl->pwmc, PWM_CUPD, pwm_duty);
|
|
|
- if (gpio_is_valid(pwmbl->gpio_on)) {
|
|
|
- gpio_set_value(pwmbl->gpio_on,
|
|
|
- 1 ^ pwmbl->pdata->on_active_low);
|
|
|
- }
|
|
|
+ atmel_pwm_bl_set_gpio_on(pwmbl, 1);
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
@@ -196,10 +198,7 @@ static int atmel_pwm_bl_remove(struct platform_device *pdev)
|
|
|
{
|
|
|
struct atmel_pwm_bl *pwmbl = platform_get_drvdata(pdev);
|
|
|
|
|
|
- if (gpio_is_valid(pwmbl->gpio_on)) {
|
|
|
- gpio_set_value(pwmbl->gpio_on,
|
|
|
- 0 ^ pwmbl->pdata->on_active_low);
|
|
|
- }
|
|
|
+ atmel_pwm_bl_set_gpio_on(pwmbl, 0);
|
|
|
pwm_channel_disable(&pwmbl->pwmc);
|
|
|
pwm_channel_free(&pwmbl->pwmc);
|
|
|
|