1. rk3036 lcdc: fix 1080i display error.
authorZheng Yang <zhengyang@rock-chips.com>
Fri, 22 Aug 2014 07:42:26 +0000 (15:42 +0800)
committerZheng Yang <zhengyang@rock-chips.com>
Fri, 22 Aug 2014 07:42:26 +0000 (15:42 +0800)
2. rk312x lcdc: fix compile error.

drivers/video/rockchip/lcdc/rk3036_lcdc.c
drivers/video/rockchip/lcdc/rk312x_lcdc.c

index 40c0cfd087605d42ec18d284c261cb0336a4f8e7..0c6ddb4f9075ab280f56d76fe9457b48b07962fd 100755 (executable)
@@ -236,8 +236,6 @@ static void lcdc_layer_update_regs(struct lcdc_device *lcdc_dev,
                              v_WIN0_FORMAT(win->fmt_cfg) |
                              v_WIN0_RB_SWAP(win->swap_rb);
                        lcdc_msk_reg(lcdc_dev, SYS_CTRL, mask, val);
-                       lcdc_msk_reg(lcdc_dev, DSP_CTRL0, m_WIN0_INTERLACE_EN,
-                                    v_WIN0_INTERLACE_EN(win->interlace_read));
                        lcdc_writel(lcdc_dev, WIN0_SCL_FACTOR_YRGB,
                                    v_X_SCL_FACTOR(win->scale_yrgb_x) |
                                    v_Y_SCL_FACTOR(win->scale_yrgb_y));
@@ -268,8 +266,6 @@ static void lcdc_layer_update_regs(struct lcdc_device *lcdc_dev,
                              v_WIN1_FORMAT(win->fmt_cfg) |
                              v_WIN1_RB_SWAP(win->swap_rb);
                        lcdc_msk_reg(lcdc_dev, SYS_CTRL, mask, val);
-                       lcdc_msk_reg(lcdc_dev, DSP_CTRL0, m_WIN1_INTERLACE_EN,
-                                    v_WIN1_INTERLACE_EN(win->interlace_read));
                        lcdc_writel(lcdc_dev, WIN1_SCL_FACTOR_YRGB,
                                    v_X_SCL_FACTOR(win->scale_yrgb_x) |
                                    v_Y_SCL_FACTOR(win->scale_yrgb_y));
@@ -585,12 +581,16 @@ static int rk3036_load_screen(struct rk_lcdc_driver *dev_drv, bool initscreen)
                                     m_INTERLACE_DSP_POL |
                                     m_WIN1_DIFF_DCLK_EN |
                                     m_WIN0_YRGB_DEFLICK_EN |
-                                    m_WIN0_CBR_DEFLICK_EN,
+                                    m_WIN0_CBR_DEFLICK_EN |
+                                    m_WIN0_INTERLACE_EN |
+                                    m_WIN1_INTERLACE_EN,
                                     v_INTERLACE_DSP_EN(1) |
                                     v_INTERLACE_DSP_POL(0) |
                                     v_WIN1_DIFF_DCLK_EN(1) |
                                     v_WIN0_YRGB_DEFLICK_EN(1) |
-                                    v_WIN0_CBR_DEFLICK_EN(1));
+                                    v_WIN0_CBR_DEFLICK_EN(1) |
+                                    v_WIN0_INTERLACE_EN(1) |
+                                    v_WIN1_INTERLACE_EN(1));
                } else {
                        val = v_VSYNC(screen->mode.vsync_len) |
                              v_VERPRD(screen->mode.vsync_len + upper_margin +
@@ -607,11 +607,15 @@ static int rk3036_load_screen(struct rk_lcdc_driver *dev_drv, bool initscreen)
                                     m_INTERLACE_DSP_EN |
                                     m_WIN1_DIFF_DCLK_EN |
                                     m_WIN0_YRGB_DEFLICK_EN |
-                                    m_WIN0_CBR_DEFLICK_EN,
+                                    m_WIN0_CBR_DEFLICK_EN |
+                                    m_WIN0_INTERLACE_EN |
+                                    m_WIN1_INTERLACE_EN,
                                     v_INTERLACE_DSP_EN(0) |
                                     v_WIN1_DIFF_DCLK_EN(0) |
                                     v_WIN0_YRGB_DEFLICK_EN(0) |
-                                    v_WIN0_CBR_DEFLICK_EN(0));
+                                    v_WIN0_CBR_DEFLICK_EN(0) |
+                                    v_WIN0_INTERLACE_EN(1) |
+                                    v_WIN1_INTERLACE_EN(1));
                }
        }
        spin_unlock(&lcdc_dev->reg_lock);
@@ -749,12 +753,7 @@ static int rk3036_lcdc_set_par(struct rk_lcdc_driver *dev_drv, int win_id)
        }
        win->scale_yrgb_x = calscale(win->area[0].xact, win->post_cfg.xsize);
        win->scale_yrgb_y = calscale(win->area[0].yact, win->post_cfg.ysize);
-       win->interlace_read = 0;
-       if( (screen->mode.vmode == 1) && (screen->mode.xres == 720) &&
-         ((screen->mode.yres == 576) || (screen->mode.yres == 480))) {
-               if(win->scale_yrgb_y > 2*0x1000)
-                       win->interlace_read = 1;
-       }
+
        switch (win->format) {
        case ARGB888:
                win->fmt_cfg = VOP_FORMAT_ARGB888;
index 402d9b2c54e9450af6423afd62b25b9fccbfbe11..be9973b3cbf06ad1a3f64d934eee867366a825ff 100755 (executable)
@@ -1660,7 +1660,7 @@ static int rk312x_fb_win_remap(struct rk_lcdc_driver *dev_drv,
 {
        mutex_lock(&dev_drv->fb_win_id_mutex);
        if (order == FB_DEFAULT_ORDER)
-               order = FB0_WIN0_FB1_WIN1_FB2_WIN2;    /*  FB0_WIN1_FB1_WIN0_FB2_WIN2; /*for box */
+               order = FB0_WIN0_FB1_WIN1_FB2_WIN2;    /*  FB0_WIN1_FB1_WIN0_FB2_WIN2; for box */
        dev_drv->fb2_win_id = order / 100;
        dev_drv->fb1_win_id = (order / 10) % 10;
        dev_drv->fb0_win_id = order % 10;