drm/rockchip: vop: fix background color on yuv domain
authorMark Yao <mark.yao@rock-chips.com>
Fri, 3 Mar 2017 00:40:21 +0000 (08:40 +0800)
committerHuang, Tao <huangtao@rock-chips.com>
Tue, 7 Mar 2017 10:43:15 +0000 (18:43 +0800)
On yuv domain, background need use 10bit yuv format.

Change-Id: I02fe3894ac12b509e22c0d90977bcb7e4535c16d
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
drivers/gpu/drm/rockchip/rockchip_drm_vop.c
drivers/gpu/drm/rockchip/rockchip_drm_vop.h
drivers/gpu/drm/rockchip/rockchip_vop_reg.c

index 1e1832248ef4c12d490d920de2017795628bf3ee..260ce2f87c47b91ebcdfa06f4cc472fc3f6a1171 100644 (file)
@@ -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;
index 8f4e702902bfdbd572faef3302c8d4f266ba14ba..0710cda186ccf35dfa01e46523cf06954b7da865 100644 (file)
@@ -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;
index 2b627c951afbc3fd2b32fa46d791c87f03e13eb4..fcb981f51d37fb0b624391539f52a2d720cae959 100644 (file)
@@ -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),