mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-10 12:57:06 +09:00
video: rockchip: vop: 3399: update hdmi RGB101010 output and csc parameter
Change-Id: I7428da925c78f68f418ff5669b08c8cfd44808b6 Signed-off-by: Huang Jiachai <hjc@rock-chips.com>
This commit is contained in:
committed by
Huang, Tao
parent
5321f01c24
commit
24baf60e95
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user