From fe07ef3880faad38bbc5a2865fdb178dc1264cba Mon Sep 17 00:00:00 2001 From: hjc Date: Wed, 11 Feb 2015 16:28:47 +0800 Subject: [PATCH] rk fb: fix screen info error when in no dual mode and pull out hdmi Signed-off-by: hjc --- drivers/video/rockchip/rk_fb.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/video/rockchip/rk_fb.c b/drivers/video/rockchip/rk_fb.c index 5c86a71a0cdc..f568c47ef165 100644 --- a/drivers/video/rockchip/rk_fb.c +++ b/drivers/video/rockchip/rk_fb.c @@ -1808,7 +1808,8 @@ static int rk_fb_set_win_buffer(struct fb_info *info, struct fb_fix_screeninfo *fix = &info->fix; struct rk_fb_par *fb_par = (struct rk_fb_par *)info->par; struct rk_lcdc_driver *dev_drv = fb_par->lcdc_drv; - struct rk_screen *screen = dev_drv->cur_screen; + /*if hdmi size move to hwc,screen should point to cur_screen*/ + struct rk_screen *screen = dev_drv->screen0;/*cur_screen;*/ struct fb_info *fbi; int i, ion_fd, acq_fence_fd; u32 xvir, yvir; @@ -3117,6 +3118,7 @@ int rk_fb_switch_screen(struct rk_screen *screen, int enable, int lcdc_id) } else { if (dev_drv->screen1) dev_drv->cur_screen = dev_drv->screen1; + memcpy(dev_drv->cur_screen, screen, sizeof(struct rk_screen)); dev_drv->cur_screen->xsize = dev_drv->cur_screen->mode.xres; dev_drv->cur_screen->ysize = dev_drv->cur_screen->mode.yres; @@ -3422,7 +3424,7 @@ static int init_lcdc_device_driver(struct rk_fb *rk_fb, dev_drv->screen0 = screen; dev_drv->cur_screen = screen; /* devie use one lcdc + rk61x scaler for dual display */ - if (rk_fb->disp_mode == ONE_DUAL) { + if ((rk_fb->disp_mode == ONE_DUAL) || (rk_fb->disp_mode == NO_DUAL)) { struct rk_screen *screen1 = devm_kzalloc(dev_drv->dev, sizeof(struct rk_screen), -- 2.34.1