From f4fdb5f5cc622c4e96ab7e607e9a764063028519 Mon Sep 17 00:00:00 2001 From: Mark Yao Date: Fri, 3 Mar 2017 08:40:21 +0800 Subject: [PATCH] drm/rockchip: vop: fix background color on yuv domain On yuv domain, background need use 10bit yuv format. Change-Id: I02fe3894ac12b509e22c0d90977bcb7e4535c16d Signed-off-by: Mark Yao --- drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 4 ++++ drivers/gpu/drm/rockchip/rockchip_drm_vop.h | 1 + drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 1 + 3 files changed, 6 insertions(+) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c index 1e1832248ef4..260ce2f87c47 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c @@ -1560,6 +1560,10 @@ static void vop_crtc_enable(struct drm_crtc *crtc) VOP_CTRL_SET(vop, dclk_ddr, s->output_mode == ROCKCHIP_OUT_MODE_YUV420 ? 1 : 0); VOP_CTRL_SET(vop, overlay_mode, is_yuv_output(s->bus_format)); + VOP_CTRL_SET(vop, dsp_out_yuv, is_yuv_output(s->bus_format)); + VOP_CTRL_SET(vop, dsp_background, + is_yuv_output(s->bus_format) ? 0x20010200 : 0); + VOP_CTRL_SET(vop, htotal_pw, (htotal << 16) | hsync_len); val = hact_st << 16; val |= hact_end; diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h index 8f4e702902bf..0710cda186cc 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h @@ -109,6 +109,7 @@ struct vop_ctrl { struct vop_reg dither_up; struct vop_reg dither_down; + struct vop_reg dsp_out_yuv; struct vop_reg dsp_data_swap; struct vop_reg dsp_ccir656_avg; struct vop_reg dsp_black; diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c index 2b627c951afb..fcb981f51d37 100644 --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c @@ -205,6 +205,7 @@ static const struct vop_ctrl rk3288_ctrl_data = { .dither_down = VOP_REG(RK3288_DSP_CTRL1, 0xf, 1), .dither_up = VOP_REG(RK3288_DSP_CTRL1, 0x1, 6), + .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_ccir656_avg = VOP_REG(RK3288_DSP_CTRL0, 0x1, 20), .dsp_blank = VOP_REG(RK3288_DSP_CTRL0, 0x3, 18), -- 2.34.1