From ba2710b981d700bd12f64aad653d3235330d6820 Mon Sep 17 00:00:00 2001 From: zwl <zwl@rockchips.com> Date: Wed, 20 Aug 2014 15:32:17 +0800 Subject: [PATCH] rk fb: add disable screen scaler when switch hdmi resolution if dispmode is ONE_DUAL --- drivers/video/rockchip/rk_fb.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/video/rockchip/rk_fb.c b/drivers/video/rockchip/rk_fb.c index f8819bf9fc44..d2c2ea516fce 100755 --- a/drivers/video/rockchip/rk_fb.c +++ b/drivers/video/rockchip/rk_fb.c @@ -3216,6 +3216,7 @@ int rk_fb_switch_screen(struct rk_screen *screen, int enable, int lcdc_id) if (unlikely(!rk_fb) || unlikely(!pmy_dev_drv) || unlikely(!screen)) return -ENODEV; + rk_fb_get_prmry_screen(&primary_screen); sprintf(name, "lcdc%d", lcdc_id); if (rk_fb->disp_mode != DUAL) { dev_drv = rk_fb->lcdc_dev_drv[0]; @@ -3225,6 +3226,12 @@ int rk_fb_switch_screen(struct rk_screen *screen, int enable, int lcdc_id) } if (dev_drv->trsm_ops && dev_drv->trsm_ops->disable) dev_drv->trsm_ops->disable(); + /* + * switch lcdc screen to primary screen size that may + * used for MID, when hdmi remove if disp mode is ONE DUAL + */ + if (primary_screen.type != SCREEN_HDMI) + rk_fb_set_screen_scaler(&primary_screen, 0); } else { dev_drv = rk_get_lcdc_drv(name); if (dev_drv == NULL) { @@ -3238,7 +3245,6 @@ int rk_fb_switch_screen(struct rk_screen *screen, int enable, int lcdc_id) if (enable == 2 /*&& dev_drv->enable*/) return 0; - rk_fb_get_prmry_screen(&primary_screen); if (!enable) { /* if screen type is different, we do not disable lcdc. */ if (dev_drv->cur_screen->type != screen->type) @@ -3257,10 +3263,6 @@ int rk_fb_switch_screen(struct rk_screen *screen, int enable, int lcdc_id) dev_drv->ops->open(dev_drv, i, 0); } } else { - /* switch lcdc screen to primary screen size - * when hdmi remove if disp mode is ONE DUAL - */ - rk_fb_set_screen_scaler(&primary_screen, 0); if (dev_drv->trsm_ops && dev_drv->trsm_ops->enable) dev_drv->trsm_ops->enable(); } -- 2.34.1