backlight: aw9364: faster resume
author黄涛 <huangtao@rock-chips.com>
Fri, 12 Aug 2011 03:41:22 +0000 (11:41 +0800)
committer黄涛 <huangtao@rock-chips.com>
Fri, 12 Aug 2011 04:13:17 +0000 (12:13 +0800)
drivers/video/backlight/aw9364_bl.c

index 72d23e513cafd60d4a32344ff05119a23a2187eb..ed011bdd8bf1a8840a44626db4218f7f9e0263bf 100755 (executable)
@@ -97,8 +97,12 @@ static int aw9364_backlight_update_status(struct backlight_device *bl)
 
        int brightness = bl->props.brightness;
        
-       if(g_aw9364_data->suspend_flag == 1)
+       if(g_aw9364_data->suspend_flag == 1) {
                brightness = 0;
+               g_aw9364_data->suspend_flag = 2;
+       } else if (g_aw9364_data->suspend_flag > 1) {
+               return 0;
+       }
        
        if (g_aw9364_data->shutdown_flag == 1)
                brightness = 0;
@@ -152,6 +156,11 @@ static void aw9364_bl_resume(struct early_suspend *h)
        aw9364_data = container_of(h, struct aw9364_backlight_data, early_suspend);
        aw9364_data->suspend_flag = 0;
 
+       struct backlight_device *bl = g_aw9364_bl;
+       int brightness = bl->props.brightness;
+       bl->props.brightness = brightness >> 1;
+       backlight_update_status(bl);
+       bl->props.brightness = brightness;
        schedule_delayed_work(&aw9364_data->work, msecs_to_jiffies(0));
        
 }
@@ -205,7 +214,7 @@ static int aw9364_backlight_probe(struct platform_device *pdev)
        platform_set_drvdata(pdev, bl);
 
 #ifdef CONFIG_HAS_EARLYSUSPEND 
-       data->early_suspend.level = ~0x0;
+       data->early_suspend.level = EARLY_SUSPEND_LEVEL_STOP_DRAWING - 1;
        data->early_suspend.suspend = aw9364_bl_suspend;
        data->early_suspend.resume = aw9364_bl_resume;
        register_early_suspend(&data->early_suspend);