mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 02:50:49 +09:00
drm/rockchip: vop: add support for bg/rb/rg/delta/dummy swap ctrl
The dsp_data_swap bits order may be different. One is bg/rb/rg/delta/dummy, such as RK3288, RK3328 and RK3399. The other is bg/delta/rb/rg/dummy, such as RK3308, RV1126 and RV1106. Signed-off-by: Damon Ding <damon.ding@rock-chips.com> Change-Id: I876f5f3e416e7d44fecda70841b59c78b48bb90c
This commit is contained in:
@@ -3145,7 +3145,7 @@ static void vop_update_csc(struct drm_crtc *crtc)
|
||||
s->output_mode = ROCKCHIP_OUT_MODE_P888;
|
||||
|
||||
if (is_uv_swap(s->bus_format, s->output_mode))
|
||||
VOP_CTRL_SET(vop, dsp_data_swap, DSP_RB_SWAP);
|
||||
VOP_CTRL_SET(vop, dsp_rb_swap, 1);
|
||||
else
|
||||
VOP_CTRL_SET(vop, dsp_data_swap, 0);
|
||||
|
||||
|
||||
@@ -305,6 +305,11 @@ struct vop_ctrl {
|
||||
struct vop_reg sw_uv_offset_en;
|
||||
struct vop_reg dsp_out_yuv;
|
||||
struct vop_reg dsp_data_swap;
|
||||
struct vop_reg dsp_bg_swap;
|
||||
struct vop_reg dsp_rb_swap;
|
||||
struct vop_reg dsp_rg_swap;
|
||||
struct vop_reg dsp_delta_swap;
|
||||
struct vop_reg dsp_dummy_swap;
|
||||
struct vop_reg yuv_clip;
|
||||
struct vop_reg dsp_ccir656_avg;
|
||||
struct vop_reg dsp_black;
|
||||
|
||||
@@ -311,6 +311,11 @@ static const struct vop_ctrl rk3288_ctrl_data = {
|
||||
|
||||
.dsp_out_yuv = VOP_REG_VER(RK3399_POST_SCL_CTRL, 0x1, 2, 3, 5, -1),
|
||||
.dsp_data_swap = VOP_REG(RK3288_DSP_CTRL0, 0x1f, 12),
|
||||
.dsp_bg_swap = VOP_REG(RK3288_DSP_CTRL0, 0x1, 12),
|
||||
.dsp_rb_swap = VOP_REG(RK3288_DSP_CTRL0, 0x1, 13),
|
||||
.dsp_rg_swap = VOP_REG(RK3288_DSP_CTRL0, 0x1, 14),
|
||||
.dsp_delta_swap = VOP_REG(RK3288_DSP_CTRL0, 0x1, 15),
|
||||
.dsp_dummy_swap = VOP_REG(RK3288_DSP_CTRL0, 0x1, 16),
|
||||
.dsp_ccir656_avg = VOP_REG(RK3288_DSP_CTRL0, 0x1, 20),
|
||||
.dsp_blank = VOP_REG(RK3288_DSP_CTRL0, 0x3, 18),
|
||||
.update_gamma_lut = VOP_REG_VER(RK3288_DSP_CTRL1, 0x1, 7, 3, 5, -1),
|
||||
@@ -1064,6 +1069,11 @@ static const struct vop_ctrl rk3328_ctrl_data = {
|
||||
.dither_up_en = VOP_REG(RK3328_DSP_CTRL1, 0x1, 6),
|
||||
|
||||
.dsp_data_swap = VOP_REG(RK3328_DSP_CTRL0, 0x1f, 12),
|
||||
.dsp_bg_swap = VOP_REG(RK3328_DSP_CTRL0, 0x1, 12),
|
||||
.dsp_rb_swap = VOP_REG(RK3328_DSP_CTRL0, 0x1, 13),
|
||||
.dsp_rg_swap = VOP_REG(RK3328_DSP_CTRL0, 0x1, 14),
|
||||
.dsp_delta_swap = VOP_REG(RK3328_DSP_CTRL0, 0x1, 15),
|
||||
.dsp_dummy_swap = VOP_REG(RK3328_DSP_CTRL0, 0x1, 16),
|
||||
.dsp_ccir656_avg = VOP_REG(RK3328_DSP_CTRL0, 0x1, 20),
|
||||
.dsp_blank = VOP_REG(RK3328_DSP_CTRL0, 0x3, 18),
|
||||
.dsp_lut_en = VOP_REG(RK3328_DSP_CTRL1, 0x1, 0),
|
||||
@@ -1554,6 +1564,9 @@ static const struct vop_ctrl px30_ctrl_data = {
|
||||
.dither_down_mode = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 6),
|
||||
.dither_up_en = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 2),
|
||||
.dsp_data_swap = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1f, 9),
|
||||
.dsp_bg_swap = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 9),
|
||||
.dsp_rb_swap = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 11),
|
||||
.dsp_rg_swap = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 12),
|
||||
.dsp_ccir656_avg = VOP_REG(RK3366_LIT_SYS_CTRL2, 0x1, 5),
|
||||
.dsp_black = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 15),
|
||||
.dsp_blank = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 14),
|
||||
@@ -1691,6 +1704,9 @@ static const struct vop_ctrl rk3308_ctrl_data = {
|
||||
.dither_down_mode = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 6),
|
||||
.dither_up_en = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 2),
|
||||
.dsp_data_swap = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1f, 9),
|
||||
.dsp_bg_swap = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 9),
|
||||
.dsp_rb_swap = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 11),
|
||||
.dsp_rg_swap = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 12),
|
||||
.dsp_ccir656_avg = VOP_REG(RK3366_LIT_SYS_CTRL2, 0x1, 5),
|
||||
.dsp_black = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 15),
|
||||
.dsp_blank = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 14),
|
||||
@@ -1799,6 +1815,9 @@ static const struct vop_ctrl rv1126_ctrl_data = {
|
||||
.dither_down_mode = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 6),
|
||||
.dither_up_en = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 2),
|
||||
.dsp_data_swap = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1f, 9),
|
||||
.dsp_bg_swap = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 9),
|
||||
.dsp_rb_swap = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 11),
|
||||
.dsp_rg_swap = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 12),
|
||||
.yuv_clip = VOP_REG(RK3366_LIT_SYS_CTRL2, 0x1, 4),
|
||||
.dsp_ccir656_avg = VOP_REG(RK3366_LIT_SYS_CTRL2, 0x1, 5),
|
||||
.dsp_black = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 15),
|
||||
@@ -1888,6 +1907,9 @@ static const struct vop_ctrl rv1106_ctrl_data = {
|
||||
.dither_down_mode = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 6),
|
||||
.dither_up_en = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 2),
|
||||
.dsp_data_swap = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1f, 9),
|
||||
.dsp_bg_swap = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 9),
|
||||
.dsp_rb_swap = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 11),
|
||||
.dsp_rg_swap = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 12),
|
||||
.yuv_clip = VOP_REG(RK3366_LIT_SYS_CTRL2, 0x1, 4),
|
||||
.dsp_black = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 15),
|
||||
.dsp_blank = VOP_REG(RK3366_LIT_DSP_CTRL2, 0x1, 14),
|
||||
|
||||
Reference in New Issue
Block a user