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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 7E7B6CCFA13 for ; Wed, 29 Apr 2026 17:00:34 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id D1C0110E3FA; Wed, 29 Apr 2026 17:00:33 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="aBVbWzee"; dkim-atps=neutral Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) by gabe.freedesktop.org (Postfix) with ESMTPS id DB09410E408 for ; Wed, 29 Apr 2026 17:00:24 +0000 (UTC) Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-4852b81c73aso106596275e9.3 for ; Wed, 29 Apr 2026 10:00:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777482023; x=1778086823; darn=lists.freedesktop.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vkSm8ny43p543u10ucazCdZPdCMdlkGl7rYD8obUTQI=; b=aBVbWzeeplgCd/49oqjTVoo0MoLM0CVvuT1oZAtZvYKKqNvXuHDjnioWiqLt+1Obvf ovUqbCG2xnoEBCnKCGczSgs39QuEc6TIVkHR8ByDU2O3DizJgK/BXtf9+JYfuaHgFhmD N8y1qIL0J9Pku91LBaY4aegJXPBSefpZg23fNF8p7N//iuCQ09uN7n5KWG+tYNp9XHaM pRtxEofeL6FyvUiE/MdpxwcEIPx998Y/jxgq3YdRyW33bo9H6S/N3FASG69/J38orEi2 W4cPQkRyothM39n8ObyjzAcksSU7tbNEh4EZy8usO12dqxB0yim33fSayPVGSG8PZuns 00JQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777482023; x=1778086823; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=vkSm8ny43p543u10ucazCdZPdCMdlkGl7rYD8obUTQI=; b=JdcswQaurGJqbPMI5MaXmnM2yyZ9AGBKU/ep4xoEIVhXMVj5eRWS3RnXHOhC5lm5Bi fZl5ogzySmBwpMSJ3G9anceeNtUCQ8FZhW8h6vKrmkejMdi+KkngcoswPiRf9cRDmgnm 1hQnPNYZSs/qL7j38tN1/r2H72MVuZS/9Ctr9zV6x8WPzY1tsFz5EOfEUf53jZTL6kmd VwzDPSIAEz4iDpozeGeE1LfqBSO6BIXTcR5LrDQnq+xOtlVRfoxGyt7BnMEwY7YFx8rG U1AVZq4tdwm9LkOjgwBBrzBwYS9j1xaUq4LfUkRcgALIw6uQG0ZCgZt8y1FeoTWCH4YH nViA== X-Forwarded-Encrypted: i=1; AFNElJ9/V0sYebZDIfIYaVYBxHl76VeBZBCCP4dxAvDl31HQxibuHQ6FzA+HZ1CEM3YrqvZTlwAYcnqB5fo=@lists.freedesktop.org X-Gm-Message-State: AOJu0Yy9ai0TkHBT3yPAiRnjQv3mPJEhMOQbauGw+acbnlFIrBEuWF65 Bq4bywpqh5TLZz0EpDQV/mN7r2PXyk4QfLuFWTRMBJz+B4ygE2bhSDJ7 X-Gm-Gg: AeBDiesLlWXDWfmPH5UyvUIpqcTFEWEhsgnvv62JRreylVpFBCTrUwJCmBC3DTXI5a3 8tAVRfdtzlMVSXbZ1IokZBcQ/E7qCe3D2Vutt4cnYfMgvl0ecOV+rvWYw6apguw26RKV8CfqvVu Prn/lZvPUlvpOrPcaJB2u1PYi7KkQVq3lAqn/AUlPEqx7qL3GuqHIKwNkAQTs15rwQMUaawsCOU rRUG/ka4Q/glYJxM45QRyvFl7x7BTIKtA2iIy6atgXOXfhxZQHFiekpOi+BR5RIMPKc4VeTo1+e RSfBuHcuwZ1OMWlvj4OkkzUnAM1epDTwL1szFumjFQe447Ip2ddSKYhUzP2pYtZMUhhoxEsrxPu xhoRW0SLjHm1XMynuOivuWbMES3x8+VLT0e0y+4uq6PkQX8E7bj3gjL+pqGlH8njKmUBId5NpXY nDL0NROLTM6x5r2y0YJqOKKPKoBRt7woyqtSUyjnJi1axE/c2kCLzjz+xjuCOGsRuu44T3jbZqu zECZr/oJj+v6C/bgR0FzSnY788wloAbmbKazwGWyVuRluIN X-Received: by 2002:a05:600c:609a:b0:48a:54a6:b29f with SMTP id 5b1f17b1804b1-48a77b1da9dmr131662065e9.17.1777482022872; Wed, 29 Apr 2026 10:00:22 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:212b:3a69:4f2c:3897]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48a820c856dsm4809755e9.6.2026.04.29.10.00.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 10:00:22 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Biju Das , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel , Geert Uytterhoeven , Magnus Damm , Laurent Pinchart , dri-devel@lists.freedesktop.org Cc: linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Prabhakar , Fabrizio Castro , Tommaso Merciai , Lad Prabhakar Subject: [PATCH 4/4] drm: renesas: rz-du: Add support for RZ/T2H SoC Date: Wed, 29 Apr 2026 18:00:12 +0100 Message-ID: <20260429170012.366537-5-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260429170012.366537-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20260429170012.366537-1-prabhakar.mahadev-lad.rj@bp.renesas.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" From: Lad Prabhakar The RZ/T2H (R9A09G077) SoC includes a DU with a DPI interface, supporting resolutions up to WXGA with two RPFs for layer blending. Unlike earlier RZ/G2L SoCs, RZ/T2H requires explicit assertion of a DPI output-enable signal (DU_MCR0_DPI_EN) during CRTC startup. Signed-off-by: Lad Prabhakar --- drivers/gpu/drm/renesas/rz-du/rzg2l_du_crtc.c | 7 ++++++- drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c | 14 ++++++++++++++ drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.h | 10 ++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_crtc.c b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_crtc.c index 2b772a11c7ee..017d5f26bc96 100644 --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_crtc.c +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_crtc.c @@ -28,6 +28,7 @@ #include "rzg2l_du_vsp.h" #define DU_MCR0 0x00 +#define DU_MCR0_DPI_EN BIT(0) #define DU_MCR0_DI_EN BIT(8) #define DU_DITR0 0x10 @@ -217,8 +218,12 @@ static void rzg2l_du_crtc_put(struct rzg2l_du_crtc *rcrtc) static void rzg2l_du_start_stop(struct rzg2l_du_crtc *rcrtc, bool start) { struct rzg2l_du_device *rcdu = rcrtc->dev; + u32 val = DU_MCR0_DI_EN; - writel(start ? DU_MCR0_DI_EN : 0, rcdu->mmio + DU_MCR0); + if (start && rzg2l_du_has(rcdu, RZG2L_DU_FEATURE_DPIO_OE)) + val |= DU_MCR0_DPI_EN; + + writel(start ? val : 0, rcdu->mmio + DU_MCR0); } static void rzg2l_du_crtc_start(struct rzg2l_du_crtc *rcrtc) diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c index 3b7162c6e1f4..fc55dfffebaf 100644 --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c @@ -63,10 +63,24 @@ static const struct rzg2l_du_device_info rzg2l_du_r9a09g057_info = { }, }; +static const struct rzg2l_du_device_info rzg2l_du_r9a09g077_info = { + .channels_mask = BIT(0), + .routes = { + [RZG2L_DU_OUTPUT_DPAD0] = { + .possible_outputs = BIT(0), + .port = 0, + }, + }, + .features = RZG2L_DU_FEATURE_DPIO_OE, + .mode_clock_min = 5000, + .mode_clock_max = 100000, +}; + static const struct of_device_id rzg2l_du_of_table[] = { { .compatible = "renesas,r9a07g043u-du", .data = &rzg2l_du_r9a07g043u_info }, { .compatible = "renesas,r9a07g044-du", .data = &rzg2l_du_r9a07g044_info }, { .compatible = "renesas,r9a09g057-du", .data = &rzg2l_du_r9a09g057_info }, + { .compatible = "renesas,r9a09g077-du", .data = &rzg2l_du_r9a09g077_info }, { /* sentinel */ } }; diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.h b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.h index 885558eb9547..baf076d69cda 100644 --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.h +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.h @@ -20,6 +20,8 @@ struct device; struct drm_property; +#define RZG2L_DU_FEATURE_DPIO_OE BIT(0) /* Has DPIO output enable control */ + enum rzg2l_du_output { RZG2L_DU_OUTPUT_DSI0, RZG2L_DU_OUTPUT_DPAD0, @@ -46,12 +48,14 @@ struct rzg2l_du_output_routing { * @routes: array of CRTC to output routes, indexed by output (RZG2L_DU_OUTPUT_*) * @mode_clock_min: minimum pixel clock in kHz * @mode_clock_max: maximum pixel clock in kHz + * @features: device features (RZG2L_DU_FEATURE_*) */ struct rzg2l_du_device_info { unsigned int channels_mask; struct rzg2l_du_output_routing routes[RZG2L_DU_OUTPUT_MAX]; u32 mode_clock_min; u32 mode_clock_max; + unsigned int features; }; #define RZG2L_DU_MAX_CRTCS 1 @@ -77,6 +81,12 @@ static inline struct rzg2l_du_device *to_rzg2l_du_device(struct drm_device *dev) return container_of(dev, struct rzg2l_du_device, ddev); } +static inline bool rzg2l_du_has(struct rzg2l_du_device *rcdu, + unsigned int feature) +{ + return rcdu->info->features & feature; +} + const char *rzg2l_du_output_name(enum rzg2l_du_output output); #endif /* __RZG2L_DU_DRV_H__ */ -- 2.54.0