Commit 5ec6fd39 authored by Uwe Kleine-König's avatar Uwe Kleine-König Committed by Krzysztof Kozlowski

ARM: s3c24xx: Switch to atomic pwm API in rx1950

Stop using the legacy PWM API which only still exists because there are
some users left.

Note this change make use of the fact that the value of struct
pwm_state::duty_cycle doesn't matter for a disabled PWM and so its value
can stay constant simplifying the code a bit.

A side effect of the conversion is that the pwm isn't stopped in
rx1950_backlight_init() by the call to pwm_apply_args() just before
reenabling it when rx1950_lcd_power(1) is called.
Signed-off-by: default avatarUwe Kleine-König <uwe@kleine-koenig.org>
Reviewed-by: default avatarVasily Khoruzhick <anarsoul@gmail.com>
Signed-off-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
parent 45984f0c
...@@ -377,6 +377,7 @@ static struct pwm_lookup rx1950_pwm_lookup[] = { ...@@ -377,6 +377,7 @@ static struct pwm_lookup rx1950_pwm_lookup[] = {
}; };
static struct pwm_device *lcd_pwm; static struct pwm_device *lcd_pwm;
static struct pwm_state lcd_pwm_state;
static void rx1950_lcd_power(int enable) static void rx1950_lcd_power(int enable)
{ {
...@@ -429,15 +430,16 @@ static void rx1950_lcd_power(int enable) ...@@ -429,15 +430,16 @@ static void rx1950_lcd_power(int enable)
/* GPB1->OUTPUT, GPB1->0 */ /* GPB1->OUTPUT, GPB1->0 */
gpio_direction_output(S3C2410_GPB(1), 0); gpio_direction_output(S3C2410_GPB(1), 0);
pwm_config(lcd_pwm, 0, LCD_PWM_PERIOD);
pwm_disable(lcd_pwm); lcd_pwm_state.enabled = false;
pwm_apply_state(lcd_pwm, &lcd_pwm_state);
/* GPC0->0, GPC10->0 */ /* GPC0->0, GPC10->0 */
gpio_direction_output(S3C2410_GPC(0), 0); gpio_direction_output(S3C2410_GPC(0), 0);
gpio_direction_output(S3C2410_GPC(10), 0); gpio_direction_output(S3C2410_GPC(10), 0);
} else { } else {
pwm_config(lcd_pwm, LCD_PWM_DUTY, LCD_PWM_PERIOD); lcd_pwm_state.enabled = true;
pwm_enable(lcd_pwm); pwm_apply_state(lcd_pwm, &lcd_pwm_state);
gpio_direction_output(S3C2410_GPC(0), 1); gpio_direction_output(S3C2410_GPC(0), 1);
gpio_direction_output(S3C2410_GPC(5), 1); gpio_direction_output(S3C2410_GPC(5), 1);
...@@ -493,10 +495,13 @@ static int rx1950_backlight_init(struct device *dev) ...@@ -493,10 +495,13 @@ static int rx1950_backlight_init(struct device *dev)
} }
/* /*
* FIXME: pwm_apply_args() should be removed when switching to * This is only required to initialize .polarity; all other values are
* the atomic PWM API. * fixed in this driver.
*/ */
pwm_apply_args(lcd_pwm); pwm_init_state(lcd_pwm, &lcd_pwm_state);
lcd_pwm_state.period = LCD_PWM_PERIOD;
lcd_pwm_state.duty_cycle = LCD_PWM_DUTY;
rx1950_lcd_power(1); rx1950_lcd_power(1);
rx1950_bl_power(1); rx1950_bl_power(1);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment