drm/rockchip: vop: add vop_reg interlace_read for rv1106

It is necessary for rv1106 to enable win interlace_read
feature when using 'i' display mode, like 720x480i and
720x576i.

Signed-off-by: Damon Ding <damon.ding@rock-chips.com>
Change-Id: I174043875d2b19f0eebaa43f3555de3ca6d96c00
This commit is contained in:
Damon Ding
2022-04-29 17:49:01 +08:00
committed by Tao Huang
parent e5c40bc9d0
commit 60788a1442
3 changed files with 7 additions and 0 deletions

View File

@@ -1963,6 +1963,10 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
spin_lock(&vop->reg_lock);
VOP_WIN_SET(vop, win, format, vop_plane_state->format);
VOP_WIN_SET(vop, win, interlace_read,
(adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) ? 1 : 0);
VOP_WIN_SET(vop, win, yrgb_vir, DIV_ROUND_UP(fb->pitches[0], 4));
VOP_WIN_SET(vop, win, yrgb_mst, vop_plane_state->yrgb_mst);

View File

@@ -512,6 +512,7 @@ struct vop_win_phy {
struct vop_reg gate;
struct vop_reg enable;
struct vop_reg format;
struct vop_reg interlace_read;
struct vop_reg fmt_10;
struct vop_reg fmt_yuyv;
struct vop_reg csc_mode;

View File

@@ -1409,6 +1409,7 @@ static const struct vop_win_phy rk3366_lit_win0_data = {
.enable = VOP_REG(RK3366_LIT_WIN0_CTRL0, 0x1, 0),
.format = VOP_REG(RK3366_LIT_WIN0_CTRL0, 0x7, 1),
.interlace_read = VOP_REG(RK3366_LIT_WIN0_CTRL0, 0x1, 8),
.rb_swap = VOP_REG(RK3366_LIT_WIN0_CTRL0, 0x1, 12),
.act_info = VOP_REG(RK3366_LIT_WIN0_ACT_INFO, 0xffffffff, 0),
.dsp_info = VOP_REG(RK3366_LIT_WIN0_DSP_INFO, 0xffffffff, 0),
@@ -1432,6 +1433,7 @@ static const struct vop_win_phy rk3366_lit_win1_data = {
.enable = VOP_REG(RK3366_LIT_WIN1_CTRL0, 0x1, 0),
.format = VOP_REG(RK3366_LIT_WIN1_CTRL0, 0x7, 4),
.interlace_read = VOP_REG(RK3366_LIT_WIN1_CTRL0, 0x1, 8),
.rb_swap = VOP_REG(RK3366_LIT_WIN1_CTRL0, 0x1, 12),
.dsp_info = VOP_REG(RK3366_LIT_WIN1_DSP_INFO, 0xffffffff, 0),
.dsp_st = VOP_REG(RK3366_LIT_WIN1_DSP_ST, 0xffffffff, 0),