From: Mark Yao <mark.yao@rock-chips.com>
Date: Wed, 13 May 2015 08:17:28 +0000 (+0800)
Subject: rk_fb: compatible for mid hdmi switch screen
X-Git-Tag: firefly_0821_release~4158^2~9
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=16deb4e06ff474fac7215e54e5449b9d92fc2599;p=firefly-linux-kernel-4.4.55.git

rk_fb: compatible for mid hdmi switch screen

Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
---

diff --git a/drivers/video/rockchip/rk_fb.c b/drivers/video/rockchip/rk_fb.c
index 6fc0ec7ef229..b9bca58b7768 100755
--- a/drivers/video/rockchip/rk_fb.c
+++ b/drivers/video/rockchip/rk_fb.c
@@ -3429,6 +3429,12 @@ int rk_fb_switch_screen(struct rk_screen *screen, int enable, int lcdc_id)
 		    (rk_fb->disp_policy != DISPLAY_POLICY_BOX) &&
 		    (rk_fb->disp_policy != DISPLAY_POLICY_BOX_TEMP))
 			dev_drv->ops->backlight_close(dev_drv, 1);
+		if (!dev_drv->uboot_logo || load_screen ||
+				((rk_fb->disp_policy != DISPLAY_POLICY_BOX) &&
+				 (rk_fb->disp_policy != DISPLAY_POLICY_BOX_TEMP))) {
+			if (dev_drv->ops->dsp_black)
+				dev_drv->ops->dsp_black(dev_drv, 0);
+		}
 		if ((dev_drv->ops->set_screen_scaler) &&
 		    (rk_fb->disp_mode == ONE_DUAL))
 			dev_drv->ops->set_screen_scaler(dev_drv,
@@ -3506,7 +3512,9 @@ int rk_fb_switch_screen(struct rk_screen *screen, int enable, int lcdc_id)
 		dev_drv->cur_screen->x_mirror = dev_drv->rotate_mode & X_MIRROR;
 		dev_drv->cur_screen->y_mirror = dev_drv->rotate_mode & Y_MIRROR;
 	}
-	if (!dev_drv->uboot_logo || load_screen) {
+	if (!dev_drv->uboot_logo || load_screen ||
+	    ((rk_fb->disp_policy != DISPLAY_POLICY_BOX) &&
+	     (rk_fb->disp_policy != DISPLAY_POLICY_BOX_TEMP))) {
 		for (i = 0; i < dev_drv->lcdc_win_num; i++) {
 			info = rk_fb->fb[dev_drv->fb_index_base + i];
 			fb_par = (struct rk_fb_par *)info->par;
@@ -3546,6 +3554,7 @@ int rk_fb_switch_screen(struct rk_screen *screen, int enable, int lcdc_id)
         kfree(envp[1]);
 
 	hdmi_switch_state = 1;
+	load_screen = true;
 	dev_drv->hdmi_switch = 0;
 	if ((rk_fb->disp_mode == ONE_DUAL) || (rk_fb->disp_mode == NO_DUAL)) {
 		if ((dev_drv->ops->set_screen_scaler) &&