Received: by 2002:a25:e74b:0:0:0:0:0 with SMTP id e72csp574864ybh; Sat, 18 Jul 2020 13:07:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwnYEJ5YEF4eCeDsCYlhNYPvij2sIW+/Q7pmEv8eJf1JFe2RuEMTufFcidpF/aihLNVm/g1 X-Received: by 2002:a05:6402:a58:: with SMTP id bt24mr15270525edb.333.1595102858549; Sat, 18 Jul 2020 13:07:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595102858; cv=none; d=google.com; s=arc-20160816; b=SG0IWM64K1/uDoF4XkbHNrC24jd9xczE2CFNuNC3L9MbVFwFPzXrWgaArv0e9blEJe 0+JjeK0ZbpXJXOAiE0DdY4dbHaavwE416nRii3WhLWzKZc9EuliC9Kt2usmsOCPlPZTz 5IAqf/Uvzl72J0JZzPNGOZoefmnsecX2tDnadQCKQOkeacGXXut0YFf4eEWGfEqF1X2e A0n8TYHynxI9fnlM5e1N2xminXyVBFyuPpyHsJfMjr1+W+jMCWMXSdYgdyysrJKy3IXo JHyIPH1gOWjGed+sYKggff3Sr26cVvg2cNGUQlAC9SSQHhG+OBGCWyApW8bnTPx/GNuy AOZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=Up2eV2Vteg16fl3+BbUfcSIqvSuhZoqeniraZ8v2vhk=; b=MNiFQ/o4AYH1QdGGN0N1t+vlp2JlUkWe+BxFIS6RE0ncwcUcqFLGOfF4x9l/JkH7Vf jxXKCAxN6i85z3eNs5wJ19ITD87cQ1woyNLL6FMao7Hl2xt4OZmw4l97GBgQeQEYQYLy gnxLEAdhraqc6+Elc0glm60FbNXtaNPP9zQYi7llUGTUpaIH4loPImujeo/ynvcPd+ya PwpGEDyHqR5nGS72goQC1YeCF1I8nsdx4xfaqaGhS4GIHDnuyWam/IrxyJ0AY+R8yCJO Go+7mwNK+ibBXbLYDR9VjZzd8hos/IRpARgylQh0BqdsHMS9BopYFKuSufQ9Cfb9MQ3c 5MPg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=nVJlF96f; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r8si7639444ejs.462.2020.07.18.13.07.15; Sat, 18 Jul 2020 13:07:38 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=nVJlF96f; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728121AbgGRUD5 (ORCPT + 99 others); Sat, 18 Jul 2020 16:03:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33584 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726798AbgGRUD4 (ORCPT ); Sat, 18 Jul 2020 16:03:56 -0400 Received: from mail-wm1-x342.google.com (mail-wm1-x342.google.com [IPv6:2a00:1450:4864:20::342]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 58AFAC0619D2 for ; Sat, 18 Jul 2020 13:03:56 -0700 (PDT) Received: by mail-wm1-x342.google.com with SMTP id f18so21530944wml.3 for ; Sat, 18 Jul 2020 13:03:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Up2eV2Vteg16fl3+BbUfcSIqvSuhZoqeniraZ8v2vhk=; b=nVJlF96fG6S4kr2LOkDNmL++aOy16kJ/Xk+UKzYE8FCRUDckFX0TRL5Z9vKoFb/Ht/ yPUTMkQIMzAOMAqFgs9sM48/xpajUVJU97MjXy7rNgrrUboVzXtZK34a+luIO8HZElOw BskKADeO5XSJQ975gidIXhXDXXksna7C9rjRwmpYNS5ftmyQHI3ZVxDZXfjeYTTu8km7 3CkLkbGEmwdjKQhKH6Jj8U2f4EY4sDQU3mCBKBts2TomIj6Hm3czGAvUiXqBtBULAp54 8gJE2OzaVBOe8EavswUthR8FEWpSAM3lwh54zb/qF1/l2QSnvbgCNfA8l7zwSORrhuOn TzBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Up2eV2Vteg16fl3+BbUfcSIqvSuhZoqeniraZ8v2vhk=; b=cTgJ2h9tLetdanXdnviNuoRNN+CLFNnn2XXKZAkN23b0EajaJCvVbDEUir8yY4hEaF 4Kf/JutAPagNwkCKBd+Npp2DO76f2p1U5H/BXntBVEg9JneMa5CoPhWS89e+VGx/1dBT Y32gHPGSNt0+l4hkF9Z8OqpTZiP3No1VnipUPHf2ORjaCOt7IM+/WjADMQFaaxxXmd4+ Rgp8809Np8OGB3OlB42Ge6XI0ol6VFDgQr86zMWKekhQL3PUCX2eZMIwIgGsOz6e7Aap mx5zO6dAErntjcIZpxtkexlBXiVvQHKFEoha/tpgN09Te08royu+yIn1cfyDsqvIqghK V6Ww== X-Gm-Message-State: AOAM533Z/HUREaPMOYQm8FjO3S86R13iIJykGQw1lwab7HiW8S/B/kMM Wa9hzvlU5FitwNrnrWs8fw== X-Received: by 2002:a1c:2183:: with SMTP id h125mr15684545wmh.83.1595102635053; Sat, 18 Jul 2020 13:03:55 -0700 (PDT) Received: from localhost.localdomain ([2a02:810b:f40:e00:922b:34ff:fe38:6455]) by smtp.googlemail.com with ESMTPSA id l15sm21073826wro.33.2020.07.18.13.03.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Jul 2020 13:03:54 -0700 (PDT) From: Alex Bee To: Sandy Huang , =?UTF-8?q?Heiko=20St=C3=BCbner=20?= Cc: Alex Bee , David Airlie , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/5] drm: rockchip: add alpha support for RK3036, RK3066, RK3126 and RK3188 Date: Sat, 18 Jul 2020 22:03:21 +0200 Message-Id: <20200718200323.3559-4-knaerzche@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200718200323.3559-1-knaerzche@gmail.com> References: <20200718200323.3559-1-knaerzche@gmail.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org With commit 2aae8ed1f390 ("drm/rockchip: Add per-pixel alpha support for the PX30 VOP") alpha support was introduced for PX30's VOP. RK3036, RK3066, RK3126 and RK3188 VOPs support alpha blending in the same manner. With the exception of RK3066 all of them support pre-multiplied alpha. This patch adds the respective registers to make this work for those VOPs as well. Signed-off-by: Alex Bee --- drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 21 +++++++++++++++++++++ drivers/gpu/drm/rockchip/rockchip_vop_reg.h | 1 + 2 files changed, 22 insertions(+) diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c index 971a6bda7458..f2f9a9af39e3 100644 --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c @@ -104,6 +104,9 @@ 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), + .alpha_pre_mul = VOP_REG(RK3036_DSP_CTRL0, 0x1, 29), }; static const struct vop_win_phy rk3036_win1_data = { @@ -119,6 +122,9 @@ 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), + .alpha_pre_mul = VOP_REG(RK3036_DSP_CTRL0, 0x1, 29), }; static const struct vop_win_data rk3036_vop_win_data[] = { @@ -185,6 +191,9 @@ static const struct vop_win_phy rk3126_win1_data = { .dsp_st = VOP_REG(RK3126_WIN1_DSP_ST, 0x1fff1fff, 0), .yrgb_mst = VOP_REG(RK3126_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), + .alpha_pre_mul = VOP_REG(RK3036_DSP_CTRL0, 0x1, 29), }; static const struct vop_win_data rk3126_vop_win_data[] = { @@ -364,6 +373,8 @@ static const struct vop_win_phy rk3066_win0_data = { .uv_mst = VOP_REG(RK3066_WIN0_CBR_MST0, 0xffffffff, 0), .yrgb_vir = VOP_REG(RK3066_WIN0_VIR, 0xffff, 0), .uv_vir = VOP_REG(RK3066_WIN0_VIR, 0x1fff, 16), + .alpha_mode = VOP_REG(RK3066_DSP_CTRL0, 0x1, 21), + .alpha_en = VOP_REG(RK3066_BLEND_CTRL, 0x1, 0), }; static const struct vop_win_phy rk3066_win1_data = { @@ -381,6 +392,8 @@ static const struct vop_win_phy rk3066_win1_data = { .uv_mst = VOP_REG(RK3066_WIN1_CBR_MST, 0xffffffff, 0), .yrgb_vir = VOP_REG(RK3066_WIN1_VIR, 0xffff, 0), .uv_vir = VOP_REG(RK3066_WIN1_VIR, 0x1fff, 16), + .alpha_mode = VOP_REG(RK3066_DSP_CTRL0, 0x1, 22), + .alpha_en = VOP_REG(RK3066_BLEND_CTRL, 0x1, 1), }; static const struct vop_win_phy rk3066_win2_data = { @@ -394,6 +407,8 @@ static const struct vop_win_phy rk3066_win2_data = { .dsp_st = VOP_REG(RK3066_WIN2_DSP_ST, 0x1fff1fff, 0), .yrgb_mst = VOP_REG(RK3066_WIN2_MST, 0xffffffff, 0), .yrgb_vir = VOP_REG(RK3066_WIN2_VIR, 0xffff, 0), + .alpha_mode = VOP_REG(RK3066_DSP_CTRL0, 0x1, 23), + .alpha_en = VOP_REG(RK3066_BLEND_CTRL, 0x1, 2), }; static const struct vop_modeset rk3066_modeset = { @@ -476,6 +491,9 @@ static const struct vop_win_phy rk3188_win0_data = { .yrgb_mst = VOP_REG(RK3188_WIN0_YRGB_MST0, 0xffffffff, 0), .uv_mst = VOP_REG(RK3188_WIN0_CBR_MST0, 0xffffffff, 0), .yrgb_vir = VOP_REG(RK3188_WIN_VIR, 0x1fff, 0), + .alpha_mode = VOP_REG(RK3188_DSP_CTRL0, 0x1, 18), + .alpha_en = VOP_REG(RK3188_ALPHA_CTRL, 0x1, 0), + .alpha_pre_mul = VOP_REG(RK3188_DSP_CTRL0, 0x1, 29), }; static const struct vop_win_phy rk3188_win1_data = { @@ -490,6 +508,9 @@ static const struct vop_win_phy rk3188_win1_data = { .dsp_st = VOP_REG(RK3188_WIN1_DSP_ST, 0x0fff0fff, 0), .yrgb_mst = VOP_REG(RK3188_WIN1_MST, 0xffffffff, 0), .yrgb_vir = VOP_REG(RK3188_WIN_VIR, 0x1fff, 16), + .alpha_mode = VOP_REG(RK3188_DSP_CTRL0, 0x1, 19), + .alpha_en = VOP_REG(RK3188_ALPHA_CTRL, 0x1, 1), + .alpha_pre_mul = VOP_REG(RK3188_DSP_CTRL0, 0x1, 29), }; static const struct vop_modeset rk3188_modeset = { diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.h b/drivers/gpu/drm/rockchip/rockchip_vop_reg.h index 6e9fa5815d4d..0b3cd65ba5c1 100644 --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.h +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.h @@ -955,6 +955,7 @@ #define RK3188_DSP_CTRL0 0x04 #define RK3188_DSP_CTRL1 0x08 #define RK3188_INT_STATUS 0x10 +#define RK3188_ALPHA_CTRL 0x14 #define RK3188_WIN0_YRGB_MST0 0x20 #define RK3188_WIN0_CBR_MST0 0x24 #define RK3188_WIN0_YRGB_MST1 0x28 -- 2.17.1