backlight: add get_backlight_status api for fb backlight ctrl
authoryzq <yzq@rock-chips.com>
Sat, 3 Nov 2012 08:18:28 +0000 (16:18 +0800)
committeryzq <yzq@rock-chips.com>
Sat, 3 Nov 2012 08:18:28 +0000 (16:18 +0800)
drivers/video/backlight/rk29_backlight.c
drivers/video/rockchip/rk_fb.c

index cdae8a9332e55822dfcb3deeeb8ea27efb8d91ef..b1292464b2a90d08a4582352d1106af69bf2ea9c 100755 (executable)
@@ -220,6 +220,12 @@ static struct early_suspend bl_early_suspend = {
        .level = EARLY_SUSPEND_LEVEL_BLANK_SCREEN - 1,
 };
 
+bool rk29_get_backlight_status()
+{
+       return (rk29_bl->props.state & BL_CORE_DRIVER1)?true:false;
+}
+EXPORT_SYMBOL(rk29_get_backlight_status);
+
 void rk29_backlight_set(bool on)
 {
        printk("%s: set %d\n", __func__, on);
index a71f8a75e2818eee99158a744bcad8b911af3275..cf44ce11fc640fe935d4f18f360f8fa8dd5e25d3 100644 (file)
@@ -34,6 +34,7 @@
 #include <linux/linux_logo.h>
 
 void rk29_backlight_set(bool on);
+bool rk29_get_backlight_status(void);
 
 #ifdef FB_WIMO_FLAG
 int (*video_data_to_wimo)(struct fb_info *info,u32 yuv_phy[2]) = NULL;
@@ -628,6 +629,7 @@ int rk_fb_switch_screen(rk_screen *screen ,int enable ,int lcdc_id)
        int ret;
        int i;
        int layer_id;
+       bool backlight_status = rk29_get_backlight_status();
 
 #if defined(CONFIG_ONE_LCDC_DUAL_OUTPUT_INF)
        rk29_backlight_set(0);
@@ -761,7 +763,7 @@ int rk_fb_switch_screen(rk_screen *screen ,int enable ,int lcdc_id)
 #if defined(CONFIG_NO_DUAL_DISP)  //close backlight for device whic do not support dual display
        rk29_backlight_set(!enable);
 #elif defined(CONFIG_ONE_LCDC_DUAL_OUTPUT_INF)  //close backlight for device whic do not support dual display
-       if(enable)
+       if(backlight_status == true)
                rk29_backlight_set(1);
 #endif
        return 0;