From: "Otto Pflüger" <otto.pflueger@abscue.de>
To: David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Orson Zhai <orsonzhai@gmail.com>,
Baolin Wang <baolin.wang@linux.alibaba.com>,
Chunyan Zhang <zhang.lyra@gmail.com>,
Kevin Tang <kevin.tang@unisoc.com>
Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
"Otto Pflüger" <otto.pflueger@abscue.de>
Subject: [PATCH 09/12] drm: sprd: add support for newer DPU versions
Date: Sat, 19 Jul 2025 14:09:45 +0200 [thread overview]
Message-ID: <20250719-ums9230-drm-v1-9-e4344a05eb3d@abscue.de> (raw)
In-Reply-To: <20250719-ums9230-drm-v1-0-e4344a05eb3d@abscue.de>
Newer DPU revisions such as the one used in UMS9230 (version 5) do not
have internal MMU registers and also require different defaults for the
display interface configuration.
Check the DPU version register to account for these configuration
differences.
Signed-off-by: Otto Pflüger <otto.pflueger@abscue.de>
---
drivers/gpu/drm/sprd/sprd_dpu.c | 30 ++++++++++++++++++++----------
1 file changed, 20 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/sprd/sprd_dpu.c b/drivers/gpu/drm/sprd/sprd_dpu.c
index 575bcdb0e0bb30055ac5c3d0e65178cc9f6611f3..01906243a93e3306fbce5bf617838b517822a2b6 100644
--- a/drivers/gpu/drm/sprd/sprd_dpu.c
+++ b/drivers/gpu/drm/sprd/sprd_dpu.c
@@ -27,6 +27,7 @@
#include "sprd_dsi.h"
/* Global control registers */
+#define REG_DPU_VERSION 0x00
#define REG_DPU_CTRL 0x04
#define REG_DPU_CFG0 0x08
#define REG_PANEL_SIZE 0x20
@@ -406,22 +407,31 @@ static void sprd_dpu_init(struct sprd_dpu *dpu)
{
struct dpu_context *ctx = &dpu->ctx;
u32 int_mask = 0;
+ u32 dpu_version = readl(ctx->base + REG_DPU_VERSION);
writel(0x00, ctx->base + REG_BG_COLOR);
- writel(0x00, ctx->base + REG_MMU_EN);
- writel(0x00, ctx->base + REG_MMU_PPN1);
- writel(0xffff, ctx->base + REG_MMU_RANGE1);
- writel(0x00, ctx->base + REG_MMU_PPN2);
- writel(0xffff, ctx->base + REG_MMU_RANGE2);
- writel(0x1ffff, ctx->base + REG_MMU_VPN_RANGE);
+ if (dpu_version < 0x300) {
+ writel(0x00, ctx->base + REG_MMU_EN);
+ writel(0x00, ctx->base + REG_MMU_PPN1);
+ writel(0xffff, ctx->base + REG_MMU_RANGE1);
+ writel(0x00, ctx->base + REG_MMU_PPN2);
+ writel(0xffff, ctx->base + REG_MMU_RANGE2);
+ writel(0x1ffff, ctx->base + REG_MMU_VPN_RANGE);
+ }
if (ctx->if_type == SPRD_DPU_IF_DPI) {
/* use dpi as interface */
dpu_reg_clr(ctx, REG_DPU_CFG0, BIT_DPU_IF_EDPI);
- /* disable Halt function for SPRD DSI */
- dpu_reg_clr(ctx, REG_DPI_CTRL, BIT_DPU_DPI_HALT_EN);
- /* select te from external pad */
- dpu_reg_set(ctx, REG_DPI_CTRL, BIT_DPU_EDPI_FROM_EXTERNAL_PAD);
+
+ if (dpu_version < 0x300) {
+ /* disable Halt function for SPRD DSI */
+ dpu_reg_clr(ctx, REG_DPI_CTRL, BIT_DPU_DPI_HALT_EN);
+ /* select te from external pad */
+ dpu_reg_set(ctx, REG_DPI_CTRL, BIT_DPU_EDPI_FROM_EXTERNAL_PAD);
+ } else {
+ /* enable Halt function for SPRD DSI */
+ dpu_reg_set(ctx, REG_DPI_CTRL, BIT_DPU_DPI_HALT_EN);
+ }
/* enable dpu update done INT */
int_mask |= BIT_DPU_INT_UPDATE_DONE;
--
2.50.0
next prev parent reply other threads:[~2025-07-19 12:11 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-19 12:09 [PATCH 00/12] drm: sprd: Make the Unisoc DRM driver usable on UMS9230 Otto Pflüger
2025-07-19 12:09 ` [PATCH 01/12] dt-bindings: display: sprd: adapt for UMS9230 support Otto Pflüger
2025-07-19 13:24 ` Rob Herring (Arm)
2025-07-20 12:26 ` Krzysztof Kozlowski
2025-07-20 13:55 ` Otto Pflüger
2025-07-20 15:38 ` Krzysztof Kozlowski
2025-07-20 17:35 ` Otto Pflüger
2025-07-22 7:19 ` Krzysztof Kozlowski
2025-07-19 12:09 ` [PATCH 02/12] dt-bindings: display: sprd: allow attaching a DSI panel Otto Pflüger
2025-07-19 12:09 ` [PATCH 03/12] drm: of: try binding port parent node instead of the port itself Otto Pflüger
2025-07-28 15:41 ` Dmitry Baryshkov
2025-07-19 12:09 ` [PATCH 04/12] drm: sprd: remove plane and crtc destroy callbacks Otto Pflüger
2025-07-28 15:41 ` Dmitry Baryshkov
2025-07-19 12:09 ` [PATCH 05/12] drm: sprd: register a DSI bridge and move init code to pre_enable Otto Pflüger
2025-07-28 15:43 ` Dmitry Baryshkov
2025-07-19 12:09 ` [PATCH 06/12] drm: sprd: add support for UMS9230 DSI PLL Otto Pflüger
2025-07-19 12:09 ` [PATCH 07/12] drm: sprd: fix DSI rate and PLL setup code Otto Pflüger
2025-07-19 12:09 ` [PATCH 08/12] drm: sprd: add gate clock support Otto Pflüger
2025-07-19 12:09 ` Otto Pflüger [this message]
2025-07-19 12:09 ` [PATCH 10/12] drm: sprd: always initialize DPU and DSI registers Otto Pflüger
2025-07-19 12:09 ` [PATCH 11/12] drm: sprd: add fbdev support Otto Pflüger
2025-07-19 12:09 ` [PATCH 12/12] drm: sprd: select REGMAP in Kconfig Otto Pflüger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250719-ums9230-drm-v1-9-e4344a05eb3d@abscue.de \
--to=otto.pflueger@abscue.de \
--cc=airlied@gmail.com \
--cc=baolin.wang@linux.alibaba.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=kevin.tang@unisoc.com \
--cc=krzk+dt@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=orsonzhai@gmail.com \
--cc=robh@kernel.org \
--cc=simona@ffwll.ch \
--cc=tzimmermann@suse.de \
--cc=zhang.lyra@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®