From 1bf64daa57dc199ebbf2ae226bd901cbf7a5fd93 Mon Sep 17 00:00:00 2001 From: =?utf-8?q?Tom=C3=A1=C5=A1=20=C4=8Cech?= Date: Thu, 3 Sep 2009 15:46:09 +0200 Subject: [PATCH] Treo680: move LCD power GPIO to proper place MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomáš Čech --- arch/arm/mach-pxa/treo680.c | 25 ++++++++++++++++--------- 1 files changed, 16 insertions(+), 9 deletions(-) diff --git a/arch/arm/mach-pxa/treo680.c b/arch/arm/mach-pxa/treo680.c index a1324f7..b33aa6a 100644 --- a/arch/arm/mach-pxa/treo680.c +++ b/arch/arm/mach-pxa/treo680.c @@ -254,16 +254,9 @@ static int treo680_backlight_init(struct device *dev) ret = gpio_direction_output(GPIO_NR_TREO680_BL_POWER, 0); if (ret) goto err2; - ret = gpio_request(GPIO_NR_TREO680_LCD_POWER, "LCD POWER"); - if (ret) - goto err2; - ret = gpio_direction_output(GPIO_NR_TREO680_LCD_POWER, 0); - if (ret) - goto err3; return 0; -err3: - gpio_free(GPIO_NR_TREO680_LCD_POWER); + err2: gpio_free(GPIO_NR_TREO680_BL_POWER); err: @@ -279,7 +272,6 @@ static int treo680_backlight_notify(int brightness) static void treo680_backlight_exit(struct device *dev) { gpio_free(GPIO_NR_TREO680_BL_POWER); - gpio_free(GPIO_NR_TREO680_LCD_POWER); } static struct platform_pwm_backlight_data treo680_backlight_data = { @@ -435,6 +427,11 @@ static struct pxafb_mode_info treo680_lcd_modes[] = { }, }; +static void treo680_lcd_power(int on, struct fb_var_screeninfo *info) +{ + gpio_set_value(GPIO_NR_TREO680_BL_POWER, on); +} + static struct pxafb_mach_info treo680_lcd_screen = { .modes = treo680_lcd_modes, .num_modes = ARRAY_SIZE(treo680_lcd_modes), @@ -476,9 +473,19 @@ static void __init treo680_udc_init(void) static void __init treo680_init(void) { + int ret; treo680_pm_init(); pxa2xx_mfp_config(ARRAY_AND_SIZE(treo680_pin_config)); pxa_set_keypad_info(&treo680_keypad_platform_data); + ret = gpio_request(GPIO_NR_TREO680_LCD_POWER, "LCD POWER"); + if (!ret) { + ret = gpio_direction_output(GPIO_NR_TREO680_LCD_POWER, 0); + if (!ret) + treo680_lcd_screen.pxafb_lcd_power = treo680_lcd_power; + else + printk(KERN_ERR "Treo680: setting LCD power GPIO direction failed!\n"); + } else + printk(KERN_ERR "Treo680: LCD power GPIO request failed!\n"); set_pxa_fb_info(&treo680_lcd_screen); pxa_set_mci_info(&treo680_mci_platform_data); treo680_udc_init(); -- 1.6.3.3