From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1AE56CCFA0D for ; Thu, 6 Nov 2025 02:08:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:List-Subscribe:List-Help: List-Post:List-Archive:List-Unsubscribe:List-Id:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=a9oKy9YR2wEcS5yY6L+ZeW4gAwwPMe+tpT/PhUzFuHA=; b=VzFJpvUH77vjIG qAtOk+a34/DzrRIA+7nZyGsICUD0mgGcyfLsueBDPrZX70jibil8JsDuAjJBg+/k5ZkGNLf3X1aMZ hI5Dx6GPksDj1RUssJPVY9//20TzlGhOCrs4IcutDPiaD546EPlv/EPyEfD/lEKcAvywiEJIbLr/K QpqBl0Rh8pHMZSp57FRcV80D2KNfVYU+AKsTaXDVlaEfQKyPhi+s/E6+fQxbutGuObnbSRC6QOAz3 TyDd/L0C3vlCfX7cvsyNa7w2l5ne2ovoA48vw3DBOQmExmWIHy03GZ99NQfng3mTsHI61gGqb5Ct8 mGMrLJtv0SWbmKCYAmsg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vGpPs-0000000Ek21-2yg3; Thu, 06 Nov 2025 02:08:00 +0000 Received: from smtpbgau1.qq.com ([54.206.16.166]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vGpPn-0000000EjQ9-3Hx2; Thu, 06 Nov 2025 02:07:58 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=airkyi.com; s=altu2504; t=1762394838; bh=J2Dfi8ObLWDtR4Ds26hqQWc9pn2P2eSkWbDnDzh2tek=; h=From:To:Subject:Date:Message-Id; b=QWIMM8WMLgmM1GHI2ekmPYFThz45q9VZVmq8Tu/S+w+MjnJDs2JJKQrU8Tvupgr+7 6bt1dw2uq68DQKZfSlWhkS2WbEyYGaocSqjGAQh9Qh3AkTrKWPk7JkscrPROkLZZBh jd+i5m3MBZx1lu4jT570uTwKfyaptIFTt8vWguiU= X-QQ-mid: esmtpgz15t1762394836t5c25a9a9 X-QQ-Originating-IP: MNgHLaivXKIqdVXO1uJSHb8Co2TeOFaAisJDtLBd4mA= Received: from DESKTOP-8BT1A2O.localdomain ( [58.22.7.114]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 06 Nov 2025 10:07:14 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 4187062248744172939 From: Chaoyi Chen To: Neil Armstrong , Jessica Zhang , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Sandy Huang , =?UTF-8?q?Heiko=20St=C3=BCbner?= , Andy Yan , Vinod Koul , Kishon Vijay Abraham I Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-phy@lists.infradead.org, Chaoyi Chen Subject: [PATCH 9/9] drm/rockchip: vop: Add support for rk3506 Date: Thu, 6 Nov 2025 10:06:32 +0800 Message-Id: <20251106020632.92-10-kernel@airkyi.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20251106020632.92-1-kernel@airkyi.com> References: <20251106020632.92-1-kernel@airkyi.com> X-QQ-SENDSIZE: 520 Feedback-ID: esmtpgz:airkyi.com:qybglogicsvrgz:qybglogicsvrgz6b-0 X-QQ-XMAILINFO: NmjM7tI9iA2tclLMxUkABYeywUVgWiGT5d+cHlw3fxtG6M+TkmOC9emn G69z+CUpiKxYB9BKG/DFScyQE8b3X/uNE/2uorCMt64eUnZNggaXcdE9RuEeU3SfX8t+v20 /q+3fZrScWbp1gKT11rm3JOBwHio8wzuHhUfUwMYMD6iG9MZ8ZKHtbs5ICB2MGAe+CS2Vvj dwaeHOvdFxEaLWbkG+xakq2cj23rc6wSmXy8VUzYgZ14Q3ZtCTpzTXbU6hhXhgFaNu0qkSq FNpIHtG+Mg2Hqu/M9vzIECGuk7PRduFdD5CqWKcXRJiHFPuBCapxh+4Z6DBzS4zSzEY+Cz1 FglCY6+XjFVkElG39Gge9aFcs2DGcybzjYCgF/ILu2/6GjB0wSgU36djHPFVmRWJ1hYM+fb CL1p7036Z1zP7Eg25C/yKBU/SuriIzTU671fbKpttmolJPmS8Uo6mIGwfLRHGr9md+qOYmf C0lUYJe8YIMitmlB0NdRSspNnALLMDBA415mN2KPhnO7/afL5Y1Xp+U0ddxwC4wLZG5f6bz MHJfVutBlHwYywJq58B357JHw/IiWLqxtMTuyno5fUyGPMP6cNTW26wCG//ay/utfZCW2ol 0VrOfDUCE6yPVTbckosU+0wmajJwHPYPWOAue4S7modGzpKwj9AkVZNxNPS64BwgRHECVbk uYV+rZ6TqXdpJNQ1PICVVh7cZL1J/Xh6EmHtKLt7sT/iwZqRLNWMB14wetJ73MXxJ+iQxui oBj/yBhOmMqgFDjG6dDqXP/Tp23vnT5uXAUrpaElIdNzpSoodAT1ylCJxPy5m6VRvuajNWW uz0qXWVOgpz1pdzAS/9rvmRebi32ZvaNTvLnGzh4iKK30GIYDQvagnLtQwN7hDHIcwmBk1X uPtunjxzZoNxnWQZcEIkmO9p4irwsrLwa1aBXbd8lVCPQrLAG2iL33RJFiyTheugHKlPzr7 UVnxHqGNJ1FawHFzZdcaizdxn6zp+6kryDTJDU9sgKQKi8uA5uiPVIdYWmI+tUM7Wzc1r97 PACVtKgHNmY52td5yLJ1MXIO00/Z+CtxrgpTMcqA== X-QQ-XMRINFO: MSVp+SPm3vtS1Vd6Y4Mggwc= X-QQ-RECHKSPAM: 0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20251105_180756_278681_A8FDE1DE X-CRM114-Status: GOOD ( 10.90 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org From: Chaoyi Chen The VOP on rk3506: - Support 2 lane MIPI DSI interface, 1.5Gbps/lane. - Support RGB interface. - Max output resolution is 1280x1280@60fps. - WIN1 layer support RGB888/ARGB8888/RGB565. - Support Gamma LUT. - ... Signed-off-by: Chaoyi Chen --- drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 57 +++++++++++++++++++++ drivers/gpu/drm/rockchip/rockchip_vop_reg.h | 14 +++++ 2 files changed, 71 insertions(+) diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c index d1f788763318..6b654b682a94 100644 --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c @@ -1179,6 +1179,61 @@ static const struct vop_data rk3328_vop = { .max_output = { 4096, 2160 }, }; +static const struct vop_common rk3506_common = { + .standby = VOP_REG_SYNC(RK3506_SYS_CTRL2, 0x1, 1), + .out_mode = VOP_REG(RK3506_DSP_CTRL2, 0xf, 16), + .dsp_blank = VOP_REG(RK3506_DSP_CTRL2, 0x1, 14), + .dither_down_en = VOP_REG(RK3506_DSP_CTRL2, 0x1, 8), + .dither_down_sel = VOP_REG(RK3506_DSP_CTRL2, 0x1, 7), + .dither_down_mode = VOP_REG(RK3506_DSP_CTRL2, 0x1, 6), + .dsp_lut_en = VOP_REG(RK3506_DSP_CTRL2, 0x1, 5), + .dither_up = VOP_REG(RK3506_DSP_CTRL2, 0x1, 2), + .cfg_done = VOP_REG_SYNC(RK3506_REG_CFG_DONE, 0x1, 0), +}; + +static const struct vop_output rk3506_output = { + .rgb_en = VOP_REG(RK3506_DSP_CTRL0, 0x1, 0), + .rgb_pin_pol = VOP_REG(RK3506_DSP_CTRL0, 0x7, 2), + .mipi_en = VOP_REG(RK3506_DSP_CTRL0, 0x1, 24), + .mipi_dclk_pol = VOP_REG(RK3506_DSP_CTRL0, 0x1, 25), + .mipi_pin_pol = VOP_REG(RK3506_DSP_CTRL0, 0x7, 26), +}; + +static const struct vop_win_phy rk3506_win1_data = { + .data_formats = formats_win_lite, + .nformats = ARRAY_SIZE(formats_win_lite), + .format_modifiers = format_modifiers_win_lite, + .enable = VOP_REG(RK3506_WIN1_CTRL0, 0x1, 0), + .format = VOP_REG(RK3506_WIN1_CTRL0, 0x7, 4), + .rb_swap = VOP_REG(RK3506_WIN1_CTRL0, 0x1, 12), + .channel = VOP_REG(RK3506_WIN1_CTRL1, 0xf, 8), + .yrgb_vir = VOP_REG(RK3506_WIN1_VIR, 0x1fff, 0), + .yrgb_mst = VOP_REG(RK3506_WIN1_MST, 0xffffffff, 0), + .dsp_info = VOP_REG(RK3506_WIN1_DSP_INFO, 0xffffffff, 0), + .dsp_st = VOP_REG(RK3506_WIN1_DSP_ST, 0xffffffff, 0), + .alpha_en = VOP_REG(RK3506_WIN1_ALPHA_CTRL, 0x1, 0), + .alpha_mode = VOP_REG(RK3506_WIN1_ALPHA_CTRL, 0x1, 1), + .alpha_pre_mul = VOP_REG(RK3506_WIN1_ALPHA_CTRL, 0x1, 2), +}; + +static const struct vop_win_data rk3506_vop_win_data[] = { + { .base = 0x00, .phy = &rk3506_win1_data, + .type = DRM_PLANE_TYPE_PRIMARY }, +}; + +static const struct vop_data rk3506_vop = { + .version = VOP_VERSION(2, 0xe), + .feature = VOP_FEATURE_INTERNAL_RGB, + .intr = &px30_intr, + .common = &rk3506_common, + .modeset = &px30_modeset, + .output = &rk3506_output, + .win = rk3506_vop_win_data, + .win_size = ARRAY_SIZE(rk3506_vop_win_data), + .lut_size = 256, + .max_output = { 1280, 1280 }, +}; + static const struct vop_common rv1126_common = { .standby = VOP_REG_SYNC(PX30_SYS_CTRL2, 0x1, 1), .out_mode = VOP_REG(PX30_DSP_CTRL2, 0xf, 16), @@ -1259,6 +1314,8 @@ static const struct of_device_id vop_driver_dt_match[] = { .data = &rk3228_vop }, { .compatible = "rockchip,rk3328-vop", .data = &rk3328_vop }, + { .compatible = "rockchip,rk3506-vop", + .data = &rk3506_vop }, { .compatible = "rockchip,rv1126-vop", .data = &rv1126_vop }, {}, diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.h b/drivers/gpu/drm/rockchip/rockchip_vop_reg.h index addf8ca085f6..7805533e88bc 100644 --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.h +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.h @@ -1033,4 +1033,18 @@ #define RK3066_DSP_LUT_ADDR 0x800 /* rk3066 register definition end */ +/* rk3506 register definition */ +#define RK3506_REG_CFG_DONE 0x00 +#define RK3506_SYS_CTRL2 0x18 +#define RK3506_DSP_CTRL0 0x20 +#define RK3506_DSP_CTRL2 0x28 +#define RK3506_WIN1_CTRL0 0x90 +#define RK3506_WIN1_CTRL1 0x94 +#define RK3506_WIN1_VIR 0x98 +#define RK3506_WIN1_MST 0xa0 +#define RK3506_WIN1_DSP_INFO 0xa4 +#define RK3506_WIN1_DSP_ST 0xa8 +#define RK3506_WIN1_ALPHA_CTRL 0xbc +/* rk3506 register definition end */ + #endif /* _ROCKCHIP_VOP_REG_H */ -- 2.51.1 _______________________________________________ Linux-rockchip mailing list Linux-rockchip@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-rockchip