rk fb: update pixclock init value and scale mode only support ONE_DUAL mode
[firefly-linux-kernel-4.4.55.git] / drivers / video / rockchip / rk_fb.c
index 8f3afff60d239943cca9d9630c6df1268c935fbf..9e624b08a2eb72317adacfd03ba6545462eef3bc 100755 (executable)
@@ -2803,8 +2803,7 @@ static int rk_fb_set_par(struct fb_info *info)
        u32 stride_32bit_2;
        u16 uv_x_off, uv_y_off, uv_y_act;
        u8 is_pic_yuv = 0;
-
-       var->pixclock = dev_drv->pixclock;
+       /*var->pixclock = dev_drv->pixclock;*/
        win_id = dev_drv->ops->fb_get_win_id(dev_drv, info->fix.id);
        if (win_id < 0)
                return -ENODEV;
@@ -3147,7 +3146,7 @@ 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, 1);
                if ((dev_drv->ops->set_screen_scaler) &&
-                   (rk_fb->disp_policy != DISPLAY_POLICY_BOX))
+                   (rk_fb->disp_mode == ONE_DUAL))
                        dev_drv->ops->set_screen_scaler(dev_drv,
                                                        dev_drv->screen0, 0);
        }
@@ -3240,7 +3239,7 @@ int rk_fb_switch_screen(struct rk_screen *screen, int enable, int lcdc_id)
        hdmi_switch_complete = 1;
        if ((rk_fb->disp_mode == ONE_DUAL) || (rk_fb->disp_mode == NO_DUAL)) {
                if ((dev_drv->ops->set_screen_scaler) &&
-                   (rk_fb->disp_policy != DISPLAY_POLICY_BOX))
+                   (rk_fb->disp_mode == ONE_DUAL))
                        dev_drv->ops->set_screen_scaler(dev_drv, dev_drv->screen0, 1);
                if (dev_drv->ops->dsp_black)
                        dev_drv->ops->dsp_black(dev_drv, 0);
@@ -3640,7 +3639,6 @@ int rk_fb_register(struct rk_lcdc_driver *dev_drv,
                    (fbi->var.xres_virtual) * (fbi->var.bits_per_pixel >> 3);
                fbi->var.width = dev_drv->cur_screen->width;
                fbi->var.height = dev_drv->cur_screen->height;
-               fbi->var.pixclock = dev_drv->pixclock;
                if (dev_drv->iommu_enabled)
                        fb_ops.fb_mmap = rk_fb_mmap;
                fbi->fbops = &fb_ops;
@@ -3709,7 +3707,7 @@ int rk_fb_register(struct rk_lcdc_driver *dev_drv,
                u32 dsp_addr;
                struct fb_info *main_fbi = rk_fb->fb[0];
                main_fbi->fbops->fb_open(main_fbi, 1);
-
+               main_fbi->var.pixclock = dev_drv->pixclock;
 #if defined(CONFIG_ROCKCHIP_IOMMU)
                if (dev_drv->iommu_enabled) {
                        if (dev_drv->mmu_dev)
@@ -3852,9 +3850,9 @@ int rk_fb_register(struct rk_lcdc_driver *dev_drv,
                main_fbi->fbops->fb_pan_display(&main_fbi->var, main_fbi);
 #endif
        } else {
-               struct fb_info *extend_fbi = rk_fb->fb[rk_fb->num_fb >> 1];
-
-               rk_fb_alloc_buffer(extend_fbi);
+                struct fb_info *extend_fbi = rk_fb->fb[rk_fb->num_fb >> 1];
+                extend_fbi->var.pixclock = rk_fb->fb[0]->var.pixclock;
+                rk_fb_alloc_buffer(extend_fbi);
        }
 #endif
        return 0;