rk fb: add fb disp policy for excessive stage
authorhjc <hjc@rock-chips.com>
Wed, 15 Apr 2015 11:28:05 +0000 (19:28 +0800)
committerhjc <hjc@rock-chips.com>
Wed, 15 Apr 2015 11:28:05 +0000 (19:28 +0800)
Signed-off-by: hjc <hjc@rock-chips.com>
drivers/video/rockchip/lcdc/rk3368_lcdc.c
drivers/video/rockchip/rk_fb.c
include/dt-bindings/rkfb/rk_fb.h

index 42d411723559f59213191a28b6ae51919d743a4b..1a32b47e8d4aa1b1293d7f4eb5e3b5a7600d0ae8 100755 (executable)
@@ -4321,7 +4321,8 @@ static int rk3368_lcdc_set_bcsh(struct rk_lcdc_driver *dev_drv, bool enable)
        return 0;
 }
 
-static int rk3368_lcdc_dsp_black(struct rk_lcdc_driver *dev_drv, int enable)
+static int __maybe_unused
+rk3368_lcdc_dsp_black(struct rk_lcdc_driver *dev_drv, int enable)
 {
        struct lcdc_device *lcdc_dev =
            container_of(dev_drv, struct lcdc_device, driver);
@@ -4424,7 +4425,7 @@ static struct rk_lcdc_drv_ops lcdc_drv_ops = {
        .dump_reg = rk3368_lcdc_reg_dump,
        .cfg_done = rk3368_lcdc_config_done,
        .set_irq_to_cpu = rk3368_lcdc_set_irq_to_cpu,
-       .dsp_black = rk3368_lcdc_dsp_black,
+       /*.dsp_black = rk3368_lcdc_dsp_black,*/
        .backlight_close = rk3368_lcdc_backlight_close,
        .mmu_en    = rk3368_lcdc_mmu_en,
        .set_overscan   = rk3368_lcdc_set_overscan,
index 97e56860655c99f3b7595907ede7c8bdc7f60617..89916610733a72c1ad9244008040f720b6223b4f 100755 (executable)
@@ -3218,7 +3218,8 @@ int rk_fb_switch_screen(struct rk_screen *screen, int enable, int lcdc_id)
        if ((rk_fb->disp_mode == ONE_DUAL) ||
            (rk_fb->disp_mode == NO_DUAL)) {
                if ((dev_drv->ops->backlight_close) &&
-                   (rk_fb->disp_policy != DISPLAY_POLICY_BOX))
+                   (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->ops->dsp_black)
                        dev_drv->ops->dsp_black(dev_drv, 1);
@@ -3240,7 +3241,8 @@ int rk_fb_switch_screen(struct rk_screen *screen, int enable, int lcdc_id)
                /* if used one lcdc to dual disp, no need to close win */
                if ((rk_fb->disp_mode == ONE_DUAL) ||
                    ((rk_fb->disp_mode == NO_DUAL) &&
-                   (rk_fb->disp_policy != DISPLAY_POLICY_BOX))) {
+                   (rk_fb->disp_policy != DISPLAY_POLICY_BOX) &&
+                   (rk_fb->disp_policy != DISPLAY_POLICY_BOX_TEMP))) {
                        dev_drv->cur_screen = dev_drv->screen0;
                        dev_drv->ops->load_screen(dev_drv, 1);
                        /* force modify dsp size */
@@ -3258,7 +3260,8 @@ int rk_fb_switch_screen(struct rk_screen *screen, int enable, int lcdc_id)
                        /*if (dev_drv->ops->dsp_black)
                                dev_drv->ops->dsp_black(dev_drv, 0);*/
                        if ((dev_drv->ops->backlight_close) &&
-                           (rk_fb->disp_policy != DISPLAY_POLICY_BOX))
+                           (rk_fb->disp_policy != DISPLAY_POLICY_BOX) &&
+                           (rk_fb->disp_policy != DISPLAY_POLICY_BOX_TEMP))
                                dev_drv->ops->backlight_close(dev_drv, 0);
                } else if (rk_fb->num_lcdc > 1) {
                        /* If there is more than one lcdc device, we disable
@@ -3288,7 +3291,8 @@ int rk_fb_switch_screen(struct rk_screen *screen, int enable, int lcdc_id)
                dev_drv->cur_screen->y_mirror = dev_drv->rotate_mode & Y_MIRROR;
        }
        if ((!dev_drv->uboot_logo) ||
-           (rk_fb->disp_policy != DISPLAY_POLICY_BOX)) {
+           ((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;
@@ -3335,6 +3339,7 @@ int rk_fb_switch_screen(struct rk_screen *screen, int enable, int lcdc_id)
                        dev_drv->ops->dsp_black(dev_drv, 0);*/
                if ((dev_drv->ops->backlight_close) &&
                    (rk_fb->disp_policy != DISPLAY_POLICY_BOX) &&
+                   (rk_fb->disp_policy != DISPLAY_POLICY_BOX_TEMP) &&
                    (rk_fb->disp_mode == ONE_DUAL))
                        dev_drv->ops->backlight_close(dev_drv, 0);
        }
index 9116f9ad2d4f9edee111effa06897069e273815b..e1daff3c1c69ca47cbbe22742c39d7a3ef2468cf 100755 (executable)
@@ -70,6 +70,7 @@
 
 #define DISPLAY_POLICY_SDK     0
 #define DISPLAY_POLICY_BOX     1
+#define DISPLAY_POLICY_BOX_TEMP        2
 
 /*             lvds connect config       
  *