[PATCH v3 0/8] drm/sun4i: update DE33 support

From: Jernej Skrabec

Date: Sun Nov 15 2026 - 01:11:31 EST


This is second series out of tree which aims at properly introducing
support for H616 Display Engine 3.3. Previous series [1] reorganized
driver so proper DE33 support can be easily implemented.

H616 DE33 support was actually introduced a while back, but it was done
without fully understanding hardware design. Issue with existing binding
is that it considers planes as resource which is hardwired to each mixer
as it was done on older Display Engine generations (DE3 and lower). That
is not the case anymore. This series introduces new driver for planes
management, which allows doing proper plane assignments.

Note that this series intentionally breaks existing H616 DE33 mixer
binding, which was released in v6.17. Old binding can't describe shared
planes, so second mixer can't be supported with it, and it never had any
user - there is no H616 Display Engine node in upstream DT, rest of H616
display pipeline is not upstream yet and no other known DT consumer
implements it. Reasons are documented in patch 7 and driver prints error
asking to update DT if old binding is detected (patch 8). See v2
discussion for more details.

Remaining patches, which introduce all the missing bits to fully support
display pipeline on H616 SoC, will be sent once this series is merged.
WIP patches, which can be used for testing purposes, can be found at [2].

Please take a look.

Best regards,
Jernej

Changes since v2:
- rebased on v7.4-rc3+ (mainline sun4i fixes)
- patch 1: explain in commit message that DE33 has only one bus clock
- patch 2: don't register regmap with syscon, drop preset plane mapping
and reword commit message
- patch 4: don't expose YCbCr color properties on planes without YUV
formats (kept Chen-Yu's R-b)
- patch 5: collected Krzysztof's R-b
- patch 6: renamed, get mapping regmap from display clocks device and
add device link instead of using syscon, defer probe until display
clocks are bound, set drvdata only after mapping is initialized,
register driver from mixer module instead of module_platform_driver()
- patch 7: explain in commit message why old binding is incompatible and
will not be supported
- patch 8: renamed, initialize blender pipe modes for DE33, add device
link to planes device, limit DE33 display regmap to its 128 KiB region,
print error asking to update DT when old binding is detected

Link to v2: https://lore.kernel.org/linux-sunxi/20260509190015.79086-1-jernej.skrabec@xxxxxxxx/
Link to v1: https://lore.kernel.org/linux-sunxi/20251115141347.13087-1-jernej.skrabec@xxxxxxxxx/

[1] https://lore.kernel.org/linux-sunxi/20251104180942.61538-1-jernej.skrabec@xxxxxxxxx/T/#t
[2] https://github.com/jernejsk/linux-1/commits/sun4i-drm-refactor/

Jernej Skrabec (8):
clk: sunxi-ng: de2: Fix Display Engine 3.3 definitions
clk: sunxi-ng: de2: Export register regmap for DE33
drm/sun4i: Add support for DE33 CSC
drm/sun4i: vi_layer: Limit formats for DE33
dt-bindings: display: allwinner: Add DE33 planes
drm/sun4i: Add DE33 shared plane driver
dt-bindings: display: allwinner: Split H616 DE33 layer reg space
drm/sun4i: Switch DE33 to split plane bindings

.../allwinner,sun50i-h616-de33-planes.yaml | 46 ++++
.../allwinner,sun8i-a83t-de2-mixer.yaml | 16 +-
drivers/clk/sunxi-ng/ccu-sun8i-de2.c | 82 ++++++-
drivers/gpu/drm/sun4i/Makefile | 3 +-
drivers/gpu/drm/sun4i/sun50i_planes.c | 215 ++++++++++++++++++
drivers/gpu/drm/sun4i/sun50i_planes.h | 43 ++++
drivers/gpu/drm/sun4i/sun8i_csc.c | 71 ++++++
drivers/gpu/drm/sun4i/sun8i_csc.h | 5 +
drivers/gpu/drm/sun4i/sun8i_mixer.c | 193 +++++++++++-----
drivers/gpu/drm/sun4i/sun8i_mixer.h | 10 +-
drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 72 ++++--
11 files changed, 663 insertions(+), 93 deletions(-)
create mode 100644 Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml
create mode 100644 drivers/gpu/drm/sun4i/sun50i_planes.c
create mode 100644 drivers/gpu/drm/sun4i/sun50i_planes.h


base-commit: b3dfbde62cf1981c4638939c159dfd087b7a72e9
--
2.43.0