VIGS: Fix first turning off display after start emulator 84/173684/4
authorRahul Dadhich <r.dadhich@samsung.com>
Fri, 23 Mar 2018 06:19:21 +0000 (11:49 +0530)
committerRahul Dadhich <r.dadhich@samsung.com>
Fri, 23 Mar 2018 06:26:28 +0000 (11:56 +0530)
Change-Id: I0fa09108f1d2f07ae7991fa0fb09d111ee49a363
Signed-off-by: Rahul Dadhich <r.dadhich@samsung.com>
drivers/gpu/drm/vigs/vigs_crtc.c

index b3daee6ae4b19e153129ca7f14cbaa7d19491e17..8feace301502bf428833b7afac8d69e5d06b6a9a 100644 (file)
@@ -104,6 +104,7 @@ static void vigs_crtc_dpms(struct drm_crtc *crtc, int mode)
     struct vigs_device *vigs_dev = crtc->dev->dev_private;
     int blank, i;
     struct fb_event event;
+    static bool backlight_initialized = false;
 
     DRM_DEBUG_KMS("enter: in_dpms = %d, mode = %d\n",
                   vigs_dev->in_dpms,
@@ -163,6 +164,20 @@ static void vigs_crtc_dpms(struct drm_crtc *crtc, int mode)
              */
             vigs_dev->in_dpms = true;
 
+            if (!backlight_initialized && blank == FB_BLANK_POWERDOWN){
+                 /*
+                 * We have to avoid turning off display backlight
+                 * before turning it on. This is maru backlight
+                 * driver limitation because Frame buffer driver
+                 * do not control backlight driver and cannot
+                 * turn on backlight initially.
+                 * So let turn backlight on first time.
+                 */
+                 blank = FB_BLANK_UNBLANK;
+                 fb_notifier_call_chain(FB_EVENT_BLANK, &event);
+                 blank = FB_BLANK_POWERDOWN;
+                 backlight_initialized = true;
+            }
             fb_notifier_call_chain(FB_EVENT_BLANK, &event);
 
             vigs_dev->in_dpms = false;