drm/rockchip: add rk3036_alpha_support
authorJacob Chen <jacob2.chen@rock-chips.com>
Mon, 18 Jul 2016 05:30:31 +0000 (13:30 +0800)
committerJacob Chen <jacob2.chen@rock-chips.com>
Wed, 27 Jul 2016 04:55:26 +0000 (12:55 +0800)
Change-Id: Ife16fb36502e70dfffc80d31d7f33235d63366eb
Signed-off-by: Jacob Chen <jacob2.chen@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 bee7049ebe1d5d602afc1bb7c63bfee557e52793..80194f7ae7eb45e3cc7aece9c86431a78985921a 100644 (file)
@@ -811,8 +811,11 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
                        SRC_ALPHA_CAL_M0(ALPHA_NO_SATURATION) |
                        SRC_FACTOR_M0(ALPHA_ONE);
                VOP_WIN_SET(vop, win, src_alpha_ctl, val);
+               VOP_WIN_SET(vop, win, alpha_mode, 1);
+               VOP_WIN_SET(vop, win, alpha_en, 1);
        } else {
                VOP_WIN_SET(vop, win, src_alpha_ctl, SRC_ALPHA_EN(0));
+               VOP_WIN_SET(vop, win, alpha_en, 0);
        }
 
        VOP_WIN_SET(vop, win, enable, 1);
index 7ae3947ef01f772d3edcda2b3cf53383dda6bc0b..820a2f6b5b261695853847c9b4b937880f4ed1ca 100644 (file)
@@ -126,6 +126,8 @@ struct vop_win_phy {
 
        struct vop_reg dst_alpha_ctl;
        struct vop_reg src_alpha_ctl;
+       struct vop_reg alpha_mode;
+       struct vop_reg alpha_en;
 };
 
 struct vop_win_data {
index 187a478ebea4f462313fac91e21116c75ebe6afc..98475a3eb84476bd77043608b595b4c76f0ce933 100644 (file)
@@ -436,6 +436,8 @@ static const struct vop_win_phy rk3036_win0_data = {
        .uv_mst = VOP_REG(RK3036_WIN0_CBR_MST, 0xffffffff, 0),
        .yrgb_vir = VOP_REG(RK3036_WIN0_VIR, 0xffff, 0),
        .uv_vir = VOP_REG(RK3036_WIN0_VIR, 0x1fff, 16),
+       .alpha_mode = VOP_REG(RK3036_DSP_CTRL0, 0x1, 18),
+       .alpha_en = VOP_REG(RK3036_ALPHA_CTRL, 0x1, 0)
 };
 
 static const struct vop_win_phy rk3036_win1_data = {
@@ -449,6 +451,8 @@ static const struct vop_win_phy rk3036_win1_data = {
        .dsp_st = VOP_REG(RK3036_WIN1_DSP_ST, 0x1fff1fff, 0),
        .yrgb_mst = VOP_REG(RK3036_WIN1_MST, 0xffffffff, 0),
        .yrgb_vir = VOP_REG(RK3036_WIN1_VIR, 0xffff, 0),
+       .alpha_mode = VOP_REG(RK3036_DSP_CTRL0, 0x1, 19),
+       .alpha_en = VOP_REG(RK3036_ALPHA_CTRL, 0x1, 1)
 };
 
 static const struct vop_win_data rk3036_vop_win_data[] = {