rk_fb: compatible for mid hdmi switch screen
authorMark Yao <mark.yao@rock-chips.com>
Wed, 13 May 2015 08:17:28 +0000 (16:17 +0800)
committerMark Yao <mark.yao@rock-chips.com>
Tue, 19 May 2015 02:56:48 +0000 (10:56 +0800)
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
drivers/video/rockchip/rk_fb.c

index 6fc0ec7ef229d0eebc9b97ffcba522cf82a929db..b9bca58b7768bed8995b390800c614757fd0960a 100755 (executable)
@@ -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) &&