video: rockchip: vop: 3399: update hdmi RGB101010 output and csc parameter
authorHuang Jiachai <hjc@rock-chips.com>
Fri, 1 Apr 2016 09:36:14 +0000 (17:36 +0800)
committerHuang, Tao <huangtao@rock-chips.com>
Tue, 5 Apr 2016 06:07:26 +0000 (14:07 +0800)
Change-Id: I7428da925c78f68f418ff5669b08c8cfd44808b6
Signed-off-by: Huang Jiachai <hjc@rock-chips.com>
drivers/video/rockchip/lcdc/rk322x_lcdc.c
drivers/video/rockchip/lcdc/rk322x_lcdc.h

index e8f03f882094697afe88c24b27e6b3a5c2690a04..60b74877619aa7469e085975bff7af8e2bda9df7 100644 (file)
@@ -656,36 +656,36 @@ static int rk3399_vop_win_csc_cfg(struct rk_lcdc_driver *dev_drv)
                        } else if (win->colorspace == CSC_BT2020) {
                                val |= V_WIN0_YUV2YUV_EN(1);
                                LOAD_CSC(vop_dev, Y2R, csc_y2r_bt2020, i);
-                               LOAD_CSC(vop_dev, 3x3, csc_r2r_bt2020to709, i);
+                               LOAD_CSC(vop_dev, R2R, csc_r2r_bt2020to709, i);
                        }
                } else if (output_color == COLOR_YCBCR ||
                                output_color == COLOR_YCBCR_BT709) {
                        if (!(IS_YUV(win->area[0].fmt_cfg) ||
                              win->area[0].yuyv_fmt)) {
                                val |= V_WIN0_YUV2YUV_R2Y_EN(1);
-                               LOAD_CSC(vop_dev, R2Y, csc_r2y_bt709_full, i);
+                               LOAD_CSC(vop_dev, R2Y, csc_r2y_bt709_full_10, i);
                        } else if (win->colorspace == CSC_BT2020) {
                                val |= V_WIN0_YUV2YUV_EN(1) |
                                        V_WIN0_YUV2YUV_Y2R_EN(1) |
                                        V_WIN0_YUV2YUV_R2Y_EN(1);
-                               LOAD_CSC(vop_dev, R2Y, csc_y2r_bt2020, i);
-                               LOAD_CSC(vop_dev, R2Y, csc_r2r_bt2020to709, i);
-                               LOAD_CSC(vop_dev, R2Y, csc_r2y_bt709_full, i);
+                               LOAD_CSC(vop_dev, Y2R, csc_y2r_bt2020, i);
+                               LOAD_CSC(vop_dev, R2R, csc_r2r_bt2020to709, i);
+                               LOAD_CSC(vop_dev, R2Y, csc_r2y_bt709_full_10, i);
                        }
                } else if (output_color == COLOR_YCBCR_BT2020) {
                        if (!(IS_YUV(win->area[0].fmt_cfg) ||
                              win->area[0].yuyv_fmt)) {
                                val |= V_WIN0_YUV2YUV_R2Y_EN(1) |
                                        V_WIN0_YUV2YUV_EN(1);
-                               LOAD_CSC(vop_dev, R2Y, csc_r2r_bt709to2020, i);
+                               LOAD_CSC(vop_dev, R2R, csc_r2r_bt709to2020, i);
                                LOAD_CSC(vop_dev, R2Y, csc_r2y_bt2020, i);
                        } else if (win->colorspace == CSC_BT601 ||
                                        win->colorspace == CSC_BT709) {
                                val |= V_WIN0_YUV2YUV_Y2R_EN(1) |
                                        V_WIN0_YUV2YUV_R2Y_EN(1) |
                                        V_WIN0_YUV2YUV_EN(1);
-                               LOAD_CSC(vop_dev, R2Y, csc_y2r_bt709_full, i);
-                               LOAD_CSC(vop_dev, R2Y, csc_r2r_bt709to2020, i);
+                               LOAD_CSC(vop_dev, Y2R, csc_y2r_bt709_full_10, i);
+                               LOAD_CSC(vop_dev, R2R, csc_r2r_bt709to2020, i);
                                LOAD_CSC(vop_dev, R2Y, csc_r2y_bt2020, i);
                        }
                }
@@ -1934,6 +1934,9 @@ static int vop_load_screen(struct rk_lcdc_driver *dev_drv, bool initscreen)
                        vop_msk_reg(vop_dev, SYS_CTRL, val);
                        break;
                case SCREEN_HDMI:
+                       if ((screen->face == OUT_P888) ||
+                           (screen->face == OUT_P101010))
+                               face = OUT_P101010; /*RGB 101010 output*/
                        val = V_HDMI_OUT_EN(1) | V_SW_UV_OFFSET_EN(0);
                        vop_msk_reg(vop_dev, SYS_CTRL, val);
                        break;
index 2329a65351007090223c880a33145c3ae9958cc5..6db168b425cadcf2f49aca1242e20ebf099c8738 100644 (file)
@@ -1282,16 +1282,16 @@ static inline u64 val_mask(int val, u64 msk, int shift)
 #define POST_YUV2YUV_3x3_COE           0x000004a0
 #define POST_YUV2YUV_R2Y_COE           0x000004c0
 #define WIN0_YUV2YUV_Y2R               0x000004e0
-#define WIN0_YUV2YUV_3x3               0x00000500
+#define WIN0_YUV2YUV_R2R               0x00000500
 #define WIN0_YUV2YUV_R2Y               0x00000520
 #define WIN1_YUV2YUV_Y2R               0x00000540
-#define WIN1_YUV2YUV_3x3               0x00000560
+#define WIN1_YUV2YUV_R2R               0x00000560
 #define WIN1_YUV2YUV_R2Y               0x00000580
 #define WIN2_YUV2YUV_Y2R               0x000005a0
-#define WIN2_YUV2YUV_3x3               0x000005c0
+#define WIN2_YUV2YUV_R2R               0x000005c0
 #define WIN2_YUV2YUV_R2Y               0x000005e0
 #define WIN3_YUV2YUV_Y2R               0x00000600
-#define WIN3_YUV2YUV_3x3               0x00000620
+#define WIN3_YUV2YUV_R2R               0x00000620
 #define WIN3_YUV2YUV_R2Y               0x00000640
 #define WIN2_LUT_ADDR                  0x00001000
 #define  V_WIN2_LUT_ADDR(x)                    VAL_MASK(x, 32, 0)