rk fb: fix screen info error when in no dual mode and pull out hdmi
authorhjc <hjc@rock-chips.com>
Wed, 11 Feb 2015 08:28:47 +0000 (16:28 +0800)
committerhjc <hjc@rock-chips.com>
Wed, 11 Feb 2015 08:30:22 +0000 (16:30 +0800)
Signed-off-by: hjc <hjc@rock-chips.com>
drivers/video/rockchip/rk_fb.c

index 5c86a71a0cdccf8bf0c91d7017b73e068ebfbb39..f568c47ef165f0719df6a6160cae31b5c1d1cec5 100644 (file)
@@ -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),