From 68382fc3eeb736714253f067540aae783aaf42d8 Mon Sep 17 00:00:00 2001 From: Damon Ding Date: Tue, 13 Jun 2023 10:53:09 +0800 Subject: [PATCH] drm/rockchip: vop: add check if global/pixel alpha both enable VOP in RK3308 supports global alpha and pixel alpha. Only one alpha mode can be enabled at the same time. Signed-off-by: Damon Ding Change-Id: Ia749deeb82a31b7e5298ca14586bbfb75606469f --- drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c index a0efdc02b4db..296c866fe3c0 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c @@ -1795,6 +1795,12 @@ static int vop_plane_atomic_check(struct drm_plane *plane, vop = to_vop(crtc); vop_data = vop->data; + if (VOP_MAJOR(vop->version) == 2 && is_alpha_support(fb->format->format) && + vop_plane_state->global_alpha != 0xff) { + DRM_ERROR("Pixel alpha and global alpha can't be enabled at the same time\n"); + return -EINVAL; + } + if (drm_rect_width(src) >> 16 < 4 || drm_rect_height(src) >> 16 < 4 || drm_rect_width(dest) < 4 || drm_rect_width(dest) < 4) { DRM_ERROR("Invalid size: %dx%d->%dx%d, min size is 4x4\n",