From c495f593fea661a23dd759f1f081522f1065d4a0 Mon Sep 17 00:00:00 2001 From: Sandy Huang Date: Fri, 2 Apr 2021 18:20:16 +0800 Subject: [PATCH] drm/rockchip: vop2: disable layer mix when it's unused If the layer pass through layer mix is unused, we need to disable alpha, at this time, the layer mix only used to transfer alpha to next mix. Change-Id: Ibd469b4fb61b41480297bc20c346e9ceefa61fc7 Signed-off-by: Sandy Huang --- drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c index fb859b8673b3..ddbbfaf617e8 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -4497,13 +4497,16 @@ static void vop2_setup_alpha(struct vop2_video_port *vp, /* Transfer pixel alpha value to next mix */ alpha_config.src_premulti_en = true; alpha_config.dst_premulti_en = true; - alpha_config.src_pixel_alpha_en = true; + alpha_config.src_pixel_alpha_en = false; alpha_config.src_glb_alpha_value = 0xff; alpha_config.dst_glb_alpha_value = 0xff; vop2_parse_alpha(&alpha_config, &alpha); for (; i < hweight32(vp->win_mask); i++) { offset = (mixer_id + i - 1) * 0x10; + + vop2_writel(vop2, src_color_ctrl_offset + offset, alpha.src_alpha_ctrl.val); + vop2_writel(vop2, dst_color_ctrl_offset + offset, alpha.dst_color_ctrl.val); vop2_writel(vop2, src_alpha_ctrl_offset + offset, alpha.src_alpha_ctrl.val); vop2_writel(vop2, dst_alpha_ctrl_offset + offset, alpha.dst_alpha_ctrl.val); }