From: Mark Yao Date: Tue, 21 Jun 2016 06:31:09 +0000 (+0800) Subject: drm/rockchip: disabled the plane alpha if it's bottom layer X-Git-Tag: firefly_0821_release~2258 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=4108b1871081009225b5b0c7a80f43dcf5ebdd7d;p=firefly-linux-kernel-4.4.55.git drm/rockchip: disabled the plane alpha if it's bottom layer HardWare limited, the bottom layer not support per-pixel alpha, Change-Id: I174da1d3d3cfff8d0b6cd6dfab4873438895e56d Signed-off-by: Mark Yao --- diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c index 15c907ab3821..b6eb2b0163ac 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c @@ -709,6 +709,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane, struct drm_crtc *crtc = state->crtc; struct vop_win *win = to_vop_win(plane); struct vop_plane_state *vop_plane_state = to_vop_plane_state(state); + struct rockchip_crtc_state *s = to_rockchip_crtc_state(crtc->state); struct vop *vop = to_vop(state->crtc); struct drm_framebuffer *fb = state->fb; unsigned int actual_w, actual_h; @@ -787,7 +788,8 @@ static void vop_plane_atomic_update(struct drm_plane *plane, rb_swap = has_rb_swapped(fb->pixel_format); VOP_WIN_SET(vop, win, rb_swap, rb_swap); - if (is_alpha_support(fb->pixel_format)) { + if (is_alpha_support(fb->pixel_format) && + (s->dsp_layer_sel & 0x3) != win->win_id) { VOP_WIN_SET(vop, win, dst_alpha_ctl, DST_FACTOR_M0(ALPHA_SRC_INVERSE)); val = SRC_ALPHA_EN(1) | SRC_COLOR_M0(ALPHA_SRC_PRE_MUL) |