From: hjc Date: Wed, 15 Apr 2015 11:28:05 +0000 (+0800) Subject: rk fb: add fb disp policy for excessive stage X-Git-Tag: firefly_0821_release~4158^2~197 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=e6ac3de62a2d408430a05a4f41cfa0002f06eb93;p=firefly-linux-kernel-4.4.55.git rk fb: add fb disp policy for excessive stage Signed-off-by: hjc --- diff --git a/drivers/video/rockchip/lcdc/rk3368_lcdc.c b/drivers/video/rockchip/lcdc/rk3368_lcdc.c index 42d411723559..1a32b47e8d4a 100755 --- a/drivers/video/rockchip/lcdc/rk3368_lcdc.c +++ b/drivers/video/rockchip/lcdc/rk3368_lcdc.c @@ -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, diff --git a/drivers/video/rockchip/rk_fb.c b/drivers/video/rockchip/rk_fb.c index 97e56860655c..89916610733a 100755 --- a/drivers/video/rockchip/rk_fb.c +++ b/drivers/video/rockchip/rk_fb.c @@ -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); } diff --git a/include/dt-bindings/rkfb/rk_fb.h b/include/dt-bindings/rkfb/rk_fb.h index 9116f9ad2d4f..e1daff3c1c69 100755 --- a/include/dt-bindings/rkfb/rk_fb.h +++ b/include/dt-bindings/rkfb/rk_fb.h @@ -70,6 +70,7 @@ #define DISPLAY_POLICY_SDK 0 #define DISPLAY_POLICY_BOX 1 +#define DISPLAY_POLICY_BOX_TEMP 2 /* lvds connect config *