From: Ryan Walklin <ryan@testtoast.com>
To: Maxime Ripard <mripard@kernel.org>, Chen-Yu Tsai <wens@csie.org>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>, Daniel Vetter <daniel@ffwll.ch>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Samuel Holland <samuel@sholland.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Michael Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>
Cc: Andre Przywara <andre.przywara@arm.com>,
Chris Morgan <macroalpha82@gmail.com>,
Hironori KIKUCHI <kikuchan98@gmail.com>,
Philippe Simons <simons.philippe@gmail.com>,
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
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 <ryan@testtoast.com>
Subject: drm: sun4i: add Display Engine 3.3 (DE33) support
Date: Sun, 16 Feb 2025 21:50:31 +1300 [thread overview]
Message-ID: <20250216085432.6373-2-ryan@testtoast.com> (raw)
Subject: [PATCH v6 00/27] drm: sun4i: add Display Engine 3.3 (DE33) support
Hi All,
v6 of this patch adding support for the Allwinner DE33 display engine, used in the H616 family of SoCs. v6 includes some small fixes to the device tree documentation, improves naming of an enum type, moves colorspace configuration from the sunxi engine object to the mixer object, and a handful of very small style and whitespace changes. All comments/tags from previous versions addressed. No functional change from v5.
A v1 patch to enable LCD output for the Anbernic RGnnXX family of devices which use this SoC with an RGB LCD will be submitted shortly.
Thanks to those who have reviewed and tested previous versions, and to Jernej for the initial patch.
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-13).
3. Replace the is_de3 mixer flag with an enum to support multiple DE versions (patch 14).
4. Refactor the mixer, vi_scaler and some register code to merge common init code and more easily support multiple DE versions (patches 15-18).
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 19).
6. Add DT bindings for the DE33 engine. (patches 20-22).
7. Extend the DE2/3 driver for the DE33, comprising clock, mixer, vi_scaler, fmt and csc module support (patches 23-27).
Further patchsets are planned to support HDMI and the LCD timing controller present in these SoCs.
Regards,
Ryan
--
Changelog v5..v6:
- Rename color format enum from format_type to sun8i_format_type
- Move color format and encoding flags from engine to mixer and add sun8i_color_model struct.
- Add commit updating the sun50i_fmt_setup function signature
- Pass mixer instead of engine in several places now that mixer holds color information.
- Update sun8i_mixer_cfg struct comment regarding change from is_de3 flag to de_type
- convert usage of uint64_t to u64 as suggested by checkpatch.pl
- Increase reg maxItems to 3 for bus and mixer binding documentation, and add constraint for h616-de33-mixer.
- Add Tested-by: tags
Jernej Skrabec (21):
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 mixer 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
Ryan Walklin (6):
drm: sun4i: de3: refactor YUV formatter module setup
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
drm: sun4i: de33: csc: add Display Engine 3.3 (DE33) support
.../bus/allwinner,sun50i-a64-de2.yaml | 7 +-
.../clock/allwinner,sun8i-a83t-de2-clk.yaml | 1 +
.../allwinner,sun8i-a83t-de2-mixer.yaml | 21 +-
drivers/clk/sunxi-ng/ccu-sun8i-de2.c | 25 ++
drivers/gpu/drm/sun4i/Makefile | 3 +-
drivers/gpu/drm/sun4i/sun4i_tcon.c | 28 +-
drivers/gpu/drm/sun4i/sun50i_afbc.c | 250 +++++++++++++
drivers/gpu/drm/sun4i/sun50i_afbc.h | 87 +++++
drivers/gpu/drm/sun4i/sun50i_fmt.c | 100 ++++++
drivers/gpu/drm/sun4i/sun50i_fmt.h | 32 ++
drivers/gpu/drm/sun4i/sun8i_csc.c | 330 +++++++++++++++---
drivers/gpu/drm/sun4i/sun8i_csc.h | 20 +-
drivers/gpu/drm/sun4i/sun8i_mixer.c | 226 +++++++++---
drivers/gpu/drm/sun4i/sun8i_mixer.h | 53 ++-
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 | 29 ++
20 files changed, 1291 insertions(+), 214 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
--
2.48.1
next reply other threads:[~2025-02-16 8:55 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-16 8:50 Ryan Walklin [this message]
2025-02-16 8:50 ` [PATCH v6 01/27] drm: sun4i: de2/de3: Change CSC argument Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 02/27] drm: sun4i: de2/de3: Merge CSC functions into one Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 03/27] drm: sun4i: de2/de3: call csc setup also for UI layer Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 04/27] drm: sun4i: de2: Initialize layer fields earlier Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 05/27] drm: sun4i: de3: Add YUV formatter module Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 06/27] drm: sun4i: de3: add format enumeration function to engine Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 07/27] drm: sun4i: de3: add formatter flag to mixer config Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 08/27] drm: sun4i: de3: add YUV support to the DE3 mixer Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 09/27] drm: sun4i: de3: refactor YUV formatter module setup Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 10/27] drm: sun4i: de3: pass mixer reference to ccsc setup function Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 11/27] drm: sun4i: de3: add YUV support to the color space correction module Ryan Walklin
2025-02-16 18:29 ` Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 12/27] drm: sun4i: de3: add YUV support to the TCON Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 13/27] drm: sun4i: support YUV formats in VI scaler Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 14/27] drm: sun4i: de2/de3: add mixer version enum Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 15/27] drm: sun4i: de2/de3: refactor mixer initialisation Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 16/27] drm: sun4i: vi_scaler refactor vi_scaler enablement Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 17/27] drm: sun4i: de2/de3: add generic blender register reference function Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 18/27] drm: sun4i: de2/de3: use generic register reference function for layer configuration Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 19/27] drm: sun4i: de3: Implement AFBC support Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 20/27] dt-bindings: allwinner: add H616 DE33 bus binding Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 21/27] dt-bindings: allwinner: add H616 DE33 clock binding Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 22/27] dt-bindings: allwinner: add H616 DE33 mixer binding Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 23/27] clk: sunxi-ng: ccu: add Display Engine 3.3 (DE33) support Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 24/27] drm: sun4i: de33: mixer: " Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 25/27] drm: sun4i: de33: vi_scaler: " Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 26/27] drm: sun4i: de33: fmt: " Ryan Walklin
2025-02-16 8:50 ` [PATCH v6 27/27] drm: sun4i: de33: csc: " Ryan Walklin
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=20250216085432.6373-2-ryan@testtoast.com \
--to=ryan@testtoast.com \
--cc=airlied@gmail.com \
--cc=andre.przywara@arm.com \
--cc=conor+dt@kernel.org \
--cc=daniel@ffwll.ch \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.baryshkov@linaro.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=jernej.skrabec@gmail.com \
--cc=kikuchan98@gmail.com \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-sunxi@lists.linux.dev \
--cc=maarten.lankhorst@linux.intel.com \
--cc=macroalpha82@gmail.com \
--cc=mripard@kernel.org \
--cc=mturquette@baylibre.com \
--cc=robh@kernel.org \
--cc=samuel@sholland.org \
--cc=sboyd@kernel.org \
--cc=simons.philippe@gmail.com \
--cc=tzimmermann@suse.de \
--cc=wens@csie.org \
/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;
as well as URLs for NNTP newsgroup(s).