From patchwork Sun Sep 29 09:04:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ryan Walklin X-Patchwork-Id: 13814943 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 C8B10CF6497 for ; Sun, 29 Sep 2024 09:12:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-Type: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=3qb0YU4vsvl7AxOpsu69eWEFjl0V89+XFDH7b+Wx+/k=; b=ZgbI3i7MY/RTgnDr1Krbx8VQJw z+yPmJW7HauMx0f2HdfMEEqfr56He1lg8C9dfiTES076AQpQo90SEZNMhE/4FSPHMEvQzEVFuWPnN 6rnwDtCrjKAgRJFYSxh2C+zRl4+7Sl6iC7Na1u4Y4iH1RtMrKPKZoLYZdHhb3auFt6A14rwMN3dEW R+LqPFLA1UnHBWGIuRRVqkcSIkEy2Keebfyzze/h0sGqLuoxbCweyOXFoPs4GZ0T3pl7FNqrIJMkV JoCK44VcGEOGjRKMRbhcYxiojTc4Q9aHnfZDNCLKqyA/6gez9vsRT6Eb/q7uL1fO58j/xneNKU/lm mbp+ffGA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1supyu-0000000ETAy-08ZP; Sun, 29 Sep 2024 09:12:44 +0000 Received: from fout-a3-smtp.messagingengine.com ([103.168.172.146]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1supxg-0000000ESnV-02qr for linux-arm-kernel@lists.infradead.org; Sun, 29 Sep 2024 09:11:29 +0000 Received: from phl-compute-06.internal (phl-compute-06.phl.internal [10.202.2.46]) by mailfout.phl.internal (Postfix) with ESMTP id 22D2D13802B6; Sun, 29 Sep 2024 05:11:27 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-06.internal (MEProxy); Sun, 29 Sep 2024 05:11:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=testtoast.com; h=cc:cc:content-transfer-encoding:content-type:date:date:from :from:in-reply-to:message-id:mime-version:reply-to:subject :subject:to:to; s=fm2; t=1727601087; x=1727687487; bh=3qb0YU4vsv l7AxOpsu69eWEFjl0V89+XFDH7b+Wx+/k=; b=PZhCOZa2eeCFcWoWhOaxr6wJA2 QK7eILcvsm+RZc2M0F7/O7HXHukzqDAlxJkS/kQU3dLNhzkG69e88DNyFQ3SJ422 tvyWiVP2X/WAYZbU/YVXfzPfK8A4K1IKoUEyQ10/R6iLYlt2jvruNoY4/+I05QcY d0DFMI4oXO4zEzOvnK0/YKm1ZWYe55qMduSxNWbsge8M2RlBwIZZcjod6DIFfZeb cixtHauZ2q86cmT04TG0YySejZ7iZOGJAn7eDt7b6LPcB0T92A0kBEyFtn85VwI9 7DthLeSGH/NpaX05CLAU6T+3HPTmh34+gwNtVllT+ulGG0xBJHT20RG+YXwQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:message-id:mime-version:reply-to:subject:subject:to :to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; t=1727601087; x=1727687487; bh=3qb0YU4vsvl7AxOpsu69eWEFjl0V 89+XFDH7b+Wx+/k=; b=jDtcXBz53jkyB8LVfOUEzFbzED8cmSY25acFJqLgtmBJ AgswMyvUABWTDCScMy+JhZ3wHOXVz1+J2YE09fEJLt/sXYGa1Kg/s7Pa7YYUrrf9 mJ2XQgEl6tLqQOy73lhyJVT0c/Hzb0uOAYDs6Xx6t/fXZtXELbBWLsSW+53ve7UY GRebJwWyrtxmqBsSsGBWo/v48D798wSlDfu9jQ0LmdCmR8fVbZvlyIhh+0qUbl7s Gd/gRduW65L+ffMndApqOBt7FzFZ0lgcnUj9OHEJkO9+bah4UOizHyU+u5ZpQNtD W5wAToB9fDF7PFZ4B3q/HnVuPQ+CDxuKA77JiYo+cg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvddufedgudegucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh htshculddquddttddmnecujfgurhephffvvefufffkofgggfestdekredtredttdenucfh rhhomheptfihrghnucghrghlkhhlihhnuceorhihrghnsehtvghsthhtohgrshhtrdgtoh hmqeenucggtffrrghtthgvrhhnpeduvdeuudeugedtueffteevveegheehvdfhfeduudev kefggfeftdehgeethffhffenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmh grihhlfhhrohhmpehrhigrnhesthgvshhtthhorghsthdrtghomhdpnhgspghrtghpthht ohepvddupdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehmrhhiphgrrhgusehkvg hrnhgvlhdrohhrghdprhgtphhtthhopeifvghnshestghsihgvrdhorhhgpdhrtghpthht ohepmhgrrghrthgvnhdrlhgrnhhkhhhorhhstheslhhinhhugidrihhnthgvlhdrtghomh dprhgtphhtthhopehtiihimhhmvghrmhgrnhhnsehsuhhsvgdruggvpdhrtghpthhtohep rghirhhlihgvugesghhmrghilhdrtghomhdprhgtphhtthhopegurghnihgvlhesfhhffi hllhdrtghhpdhrtghpthhtohepjhgvrhhnvghjrdhskhhrrggsvggtsehgmhgrihhlrdgt ohhmpdhrtghpthhtohepshgrmhhuvghlsehshhholhhlrghnugdrohhrghdprhgtphhtth hopehrohgshheskhgvrhhnvghlrdhorhhg X-ME-Proxy: Feedback-ID: idc0145fc:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 29 Sep 2024 05:11:20 -0400 (EDT) From: Ryan Walklin To: Maxime Ripard , Chen-Yu Tsai , Maarten Lankhorst , Thomas Zimmermann , David Airlie , Daniel Vetter , Jernej Skrabec , Samuel Holland , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Michael Turquette , Stephen Boyd Cc: Andre Przywara , Chris Morgan , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, Ryan Walklin Subject: [PATCH v5 00/26] drm: sun4i: add Display Engine 3.3 (DE33) support Date: Sun, 29 Sep 2024 22:04:32 +1300 Message-ID: <20240929091107.838023-1-ryan@testtoast.com> X-Mailer: git-send-email 2.46.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240929_021128_265869_15E7C955 X-CRM114-Status: GOOD ( 17.70 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi, V5 of this patch series adding support for the Allwinner DE33 display engine variant. V5 is rebased on torvalds/master as of today with the 6.12 drm-next patches included, with no code changes required. V3 and V4 were in turn rebased on top of the layer init and modesetting changes merged for 6.11. No functional changes from V4, fixes and reviews from previous V1-4 added, and relevant issues found by checkpatch.pl corrected. Original blurb below: There is existing mainline support for the DE2 and DE3 AllWinner display pipeline IP blocks, used in the A64 and H6 among others, however the H700 (as well as the H616/H618 and the T507 automotive SoC) have a newer version of the Display Engine (v3.3/DE33) which adds additional high-resolution support as well as YUV colour formats and AFBC compression support. This patch set adds DE33 support, following up from the previous RFC [1], with significant rework to break down the previous relatively complex set into more logical steps, detailed below. 1. Refactor the existing DE2/DE3 code in readiness to support YUV colour formats in the DE3 engine (patches 1-4). 2. Add YUV420 colour format support in the DE3 driver (patches 5-12). 3. Replace the is_de3 mixer flag with an enum to support multiple DE versions (patch 13). 4. Refactor the mixer, vi_scaler and some register code to merge common init code and more easily support multiple DE versions (patches 14-17). 5. Add Arm Frame Buffer Compression (AFBC) compressed buffer support to the DE3 driver. This is currently only supported for VI layers (for HW-decoded video output) but is well integrated into these changes and a subsequent patchset to enable the Video Engine is planned. (patch 18). 6. Add DT bindings for the DE33 engine. (patches 19-21). 7. Extend the DE2/3 driver for the DE33, comprising clock, mixer, vi_scaler, fmt and csc module support (patches 22-26). Further patchsets are planned to support HDMI and the LCD timing controller present in these SoCs. Regards, Ryan Jernej Skrabec (22): drm: sun4i: de2/de3: Change CSC argument drm: sun4i: de2/de3: Merge CSC functions into one drm: sun4i: de2/de3: call csc setup also for UI layer drm: sun4i: de2: Initialize layer fields earlier drm: sun4i: de3: Add YUV formatter module drm: sun4i: de3: add format enumeration function to engine drm: sun4i: de3: add formatter flag to mixer config drm: sun4i: de3: add YUV support to the DE3 mixer drm: sun4i: de3: pass engine reference to ccsc setup function drm: sun4i: de3: add YUV support to the color space correction module drm: sun4i: de3: add YUV support to the TCON drm: sun4i: support YUV formats in VI scaler drm: sun4i: de2/de3: add mixer version enum drm: sun4i: de2/de3: refactor mixer initialisation drm: sun4i: vi_scaler refactor vi_scaler enablement drm: sun4i: de2/de3: add generic blender register reference function drm: sun4i: de2/de3: use generic register reference function for layer configuration drm: sun4i: de3: Implement AFBC support drm: sun4i: de33: mixer: add Display Engine 3.3 (DE33) support drm: sun4i: de33: vi_scaler: add Display Engine 3.3 (DE33) support drm: sun4i: de33: fmt: add Display Engine 3.3 (DE33) support drm: sun4i: de33: csc: add Display Engine 3.3 (DE33) support Ryan Walklin (4): dt-bindings: allwinner: add H616 DE33 bus binding dt-bindings: allwinner: add H616 DE33 clock binding dt-bindings: allwinner: add H616 DE33 mixer binding clk: sunxi-ng: ccu: add Display Engine 3.3 (DE33) support .../bus/allwinner,sun50i-a64-de2.yaml | 4 +- .../clock/allwinner,sun8i-a83t-de2-clk.yaml | 1 + .../allwinner,sun8i-a83t-de2-mixer.yaml | 1 + drivers/clk/sunxi-ng/ccu-sun8i-de2.c | 25 ++ drivers/gpu/drm/sun4i/Makefile | 3 +- drivers/gpu/drm/sun4i/sun4i_tcon.c | 26 +- drivers/gpu/drm/sun4i/sun50i_afbc.c | 250 +++++++++++++ drivers/gpu/drm/sun4i/sun50i_afbc.h | 87 +++++ drivers/gpu/drm/sun4i/sun50i_fmt.c | 99 +++++ drivers/gpu/drm/sun4i/sun50i_fmt.h | 33 ++ drivers/gpu/drm/sun4i/sun8i_csc.c | 341 +++++++++++++++--- drivers/gpu/drm/sun4i/sun8i_csc.h | 20 +- drivers/gpu/drm/sun4i/sun8i_mixer.c | 226 +++++++++--- drivers/gpu/drm/sun4i/sun8i_mixer.h | 31 +- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 41 ++- drivers/gpu/drm/sun4i/sun8i_ui_scaler.c | 2 +- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 133 +++++-- drivers/gpu/drm/sun4i/sun8i_vi_scaler.c | 115 ++++-- drivers/gpu/drm/sun4i/sun8i_vi_scaler.h | 2 +- drivers/gpu/drm/sun4i/sunxi_engine.h | 34 ++ 20 files changed, 1269 insertions(+), 205 deletions(-) create mode 100644 drivers/gpu/drm/sun4i/sun50i_afbc.c create mode 100644 drivers/gpu/drm/sun4i/sun50i_afbc.h create mode 100644 drivers/gpu/drm/sun4i/sun50i_fmt.c create mode 100644 drivers/gpu/drm/sun4i/sun50i_fmt.h Tested-by: Philippe Simons