From 0843e0eeeac493f447529f742ac65511024b4d16 Mon Sep 17 00:00:00 2001 From: =?utf-8?q?Tom=C3=A1=C5=A1=20=C4=8Cech?= Date: Wed, 2 Sep 2009 10:41:26 +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 | 32 +++++++++++++++++++------------- 1 files changed, 19 insertions(+), 13 deletions(-) diff --git a/arch/arm/mach-pxa/treo680.c b/arch/arm/mach-pxa/treo680.c index a1324f7..22b0750 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,10 +427,16 @@ 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), - .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL, + .modes = treo680_lcd_modes, + .num_modes = ARRAY_SIZE(treo680_lcd_modes), + .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL, + .pxafb_lcd_power = treo680_lcd_power, }; /****************************************************************************** @@ -476,10 +474,18 @@ 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); - set_pxa_fb_info(&treo680_lcd_screen); + ret = gpio_request(GPIO_NR_TREO680_LCD_POWER, "LCD POWER"); + if (!ret) { + ret = gpio_direction_output(GPIO_NR_TREO680_LCD_POWER, 0); + if (!ret) + set_pxa_fb_info(&treo680_lcd_screen); + else + gpio_free(GPIO_NR_TREO680_LCD_POWER); + } pxa_set_mci_info(&treo680_mci_platform_data); treo680_udc_init(); pxa_set_udc_info(&treo680_udc_info); -- 1.6.3.3