From affb43356d7558e48e4783dcc95ebb105f951e18 Mon Sep 17 00:00:00 2001 From: Matt Sealey Date: Mon, 21 Feb 2011 18:45:31 -0600 Subject: [PATCH] backlight: jiggle the order of powering on backlight and deconfiguring the backlight PWM on blank/restore. Also, don't mess with the IO state of the PWM pin, if the PWM is disabled, it's disabled, all we need to do is turn the power off. --- arch/arm/mach-mx5/mx51_efikamx_leds.c | 20 +++----------------- drivers/video/backlight/pwm_bl.c | 8 ++++---- 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/arch/arm/mach-mx5/mx51_efikamx_leds.c b/arch/arm/mach-mx5/mx51_efikamx_leds.c index ecd710e1678..fe1f8bc316c 100644 --- a/arch/arm/mach-mx5/mx51_efikamx_leds.c +++ b/arch/arm/mach-mx5/mx51_efikamx_leds.c @@ -120,24 +120,10 @@ static struct gpio_led mx51_efikasb_leds[] = { }; #if defined(CONFIG_BACKLIGHT_PWM) -static void mx51_efikasb_backlight_power(int on) +static void mx51_efikasb_backlight_power(int state) { - if (on) { - mxc_free_iomux(EFIKASB_PWM_BACKLIGHT, IOMUX_CONFIG_GPIO); - mxc_request_iomux(EFIKASB_PWM_BACKLIGHT, IOMUX_CONFIG_ALT1); - - msleep(10); - - gpio_set_value(IOMUX_TO_GPIO(EFIKASB_PWM_BACKLIGHT_EN), 0); /* Backlight Power On */ - } else { - gpio_set_value(IOMUX_TO_GPIO(EFIKASB_PWM_BACKLIGHT_EN), 1); /* Backlight Power Off */ - - msleep(10); - - mxc_free_iomux(EFIKASB_PWM_BACKLIGHT, IOMUX_CONFIG_ALT1); - mxc_request_iomux(EFIKASB_PWM_BACKLIGHT, IOMUX_CONFIG_GPIO); - gpio_direction_output(IOMUX_TO_GPIO(EFIKASB_PWM_BACKLIGHT), 0); - } + msleep(10); + gpio_set_value(IOMUX_TO_GPIO(EFIKASB_PWM_BACKLIGHT_EN), !state); } static struct platform_pwm_backlight_data mx51_efikasb_backlight_data = { diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c index 7246013ebeb..a043f40234f 100644 --- a/drivers/video/backlight/pwm_bl.c +++ b/drivers/video/backlight/pwm_bl.c @@ -50,12 +50,12 @@ static int pwm_backlight_update_status(struct backlight_device *bl) brightness = pb->notify(brightness); if (brightness == 0) { - pwm_config(pb->pwm, 0, pb->period); - pwm_disable(pb->pwm); if (pb->power) { pb->power(0); pb->power_state = 0; } + pwm_config(pb->pwm, 0, pb->period); + pwm_disable(pb->pwm); } else { pwm_config(pb->pwm, brightness * pb->period / max, pb->period); pwm_enable(pb->pwm); @@ -87,12 +87,12 @@ static void pwm_bl_blank(struct pwm_bl_data *pb, int type) case FB_BLANK_POWERDOWN: case FB_BLANK_VSYNC_SUSPEND: case FB_BLANK_HSYNC_SUSPEND: - pwm_config(pb->pwm, 0, pb->period); - pwm_disable(pb->pwm); if (pb->power) { pb->power(0); pb->power_state = 0; } + pwm_config(pb->pwm, 0, pb->period); + pwm_disable(pb->pwm); break; } }