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:
Damon Ding
2023-03-29 14:58:36 +08:00
committed by Tao Huang
parent c4bd8d465a
commit 52afd66cc1
3 changed files with 28 additions and 1 deletions

View File

@@ -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);

View File

@@ -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;

View File

@@ -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),