From 24baf60e952232e0b4e15231e1155b7526eb0e14 Mon Sep 17 00:00:00 2001 From: Huang Jiachai Date: Fri, 1 Apr 2016 17:36:14 +0800 Subject: [PATCH] video: rockchip: vop: 3399: update hdmi RGB101010 output and csc parameter Change-Id: I7428da925c78f68f418ff5669b08c8cfd44808b6 Signed-off-by: Huang Jiachai --- drivers/video/rockchip/lcdc/rk322x_lcdc.c | 19 +++++++++++-------- drivers/video/rockchip/lcdc/rk322x_lcdc.h | 8 ++++---- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/drivers/video/rockchip/lcdc/rk322x_lcdc.c b/drivers/video/rockchip/lcdc/rk322x_lcdc.c index e8f03f882094..60b74877619a 100644 --- a/drivers/video/rockchip/lcdc/rk322x_lcdc.c +++ b/drivers/video/rockchip/lcdc/rk322x_lcdc.c @@ -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; diff --git a/drivers/video/rockchip/lcdc/rk322x_lcdc.h b/drivers/video/rockchip/lcdc/rk322x_lcdc.h index 2329a6535100..6db168b425ca 100644 --- a/drivers/video/rockchip/lcdc/rk322x_lcdc.h +++ b/drivers/video/rockchip/lcdc/rk322x_lcdc.h @@ -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) -- 2.34.1