From: Jernej Skrabec <jernej.skrabec@gmail.com>
To: wens@csie.org
Cc: mripard@kernel.org, maarten.lankhorst@linux.intel.com,
tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch,
samuel@sholland.org, dri-devel@lists.freedesktop.org,
linux-arm-kernel@lists.infradead.org,
linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org,
Jernej Skrabec <jernej.skrabec@gmail.com>
Subject: [PATCH v2 00/30] drm/sun4i: Refactor layer code for proper DE33 support
Date: Tue, 4 Nov 2025 19:09:12 +0100 [thread overview]
Message-ID: <20251104180942.61538-1-jernej.skrabec@gmail.com> (raw)
Current DE33 support in sun4i-drm driver is based on my PoC code. It was
written with *a lot* of hacks, because it was never meant to be upstreamed.
Fortunately, DT parts were never merged which give us a chance to do it
right.
This is first of three series with proper DE33 support for H616 SoC. It's
the longest, since it prepares terrain for new drivers in remaining series.
Point of this work is to completely decouple mixer and layer code. Till
DE3, mixer and layers were intimately connected. However, from DE33
onwards, this is no longer the case. DE33 and upcoming DE35 planes are
shared comodity between all mixers and can be assigned in any way driver
(or user) prefers. This requires planes code to be completely independent
from mixer. The only exception is mixer clock frequency which is used in
VI scaler, but in that case mixer pointer is obtained through currently
assigned CRTC.
Second series will introduce separate driver for DE33 planes and adjust
mixer code to new DT bindings. Third series will introduce TCON(-TOP)
adjustments, HDMI PHY and finally, DT updates for several boards.
Current WIP code for remaining two series can be found at [1]. Code has
been tested on Tanix TX6, which has DE3, for any regressions and on Myir
MYD-YT507H board [2], which has DE33, with HDMI and LVDS panel outputs
running simultaneously and independently. This confirms that plane code
is properly decoupled.
Please review.
Best regards,
Jernej
[1] https://github.com/jernejsk/linux-1/commits/sun4i-drm-refactor/
[2] https://github.com/jernejsk/linux-1/commits/okt507c-v3
Changes from v1:
- collected tags
- updated commit messages
- added missing kerneldoc description
- moved vi_scaler_num position
Link: https://lore.kernel.org/linux-sunxi/64c0a4e1-15a5-4f41-9fba-852b0e83fd6f@app.fastmail.com/T/#t
Jernej Skrabec (30):
drm/sun4i: mixer: Fix up DE33 channel macros
drm/sun4i: mixer: Remove ccsc cfg for >= DE3
drm/sun4i: de2: Initialize layer fields earlier
drm/sun4i: ui_layer: Move check from update to check callback
drm/sun4i: vi_layer: Move check from update to check callback
drm/sun4i: layers: Make atomic commit functions void
drm/sun4i: Move blender config from layers to mixer
drm/sun4i: ui layer: Write attributes in one go
drm/sun4i: vi layer: Write attributes in one go
drm/sun4i: mixer: Move layer enabling to atomic_update
drm/sun4i: de2/de3: Simplify CSC config interface
drm/sun4i: csc: Simplify arguments with taking plane state
drm/sun4i: de2/de3: Move plane type determination to mixer
drm/sun4i: ui_layer: Change index meaning
drm/sun4i: layer: move num of planes calc out of layer code
drm/sun4i: ui_layer: use layer struct instead of multiple args
drm/sun4i: vi_layer: use layer struct instead of multiple args
drm/sun4i: ui_scaler: use layer instead of mixer for args
drm/sun4i: vi_scaler: use layer instead of mixer for args
drm/sun4i: layers: Make regmap for layers configurable
drm/sun4i: csc: use layer arg instead of mixer
drm/sun4i: layers: add physical index arg
drm/sun4i: vi_scaler: Update DE33 base calculation
drm/sun4i: mixer: Convert heuristics to quirk
drm/sun4i: ui_scaler: drop sanity checks
drm/sun4i: mixer: Add quirk for number of VI scalers
drm/sun4i: mixer: split out layer config
drm/sun4i: layer: replace mixer with layer struct
drm/sun4i: vi_scaler: Find mixer from crtc
drm/sun4i: Nuke mixer pointer from layer code
drivers/gpu/drm/sun4i/sun8i_csc.c | 113 ++++++-----
drivers/gpu/drm/sun4i/sun8i_csc.h | 16 +-
drivers/gpu/drm/sun4i/sun8i_mixer.c | 217 +++++++++++++--------
drivers/gpu/drm/sun4i/sun8i_mixer.h | 65 ++++---
drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 183 +++++++-----------
drivers/gpu/drm/sun4i/sun8i_ui_layer.h | 7 +-
drivers/gpu/drm/sun4i/sun8i_ui_scaler.c | 44 ++---
drivers/gpu/drm/sun4i/sun8i_ui_scaler.h | 4 +-
drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 244 +++++++++---------------
drivers/gpu/drm/sun4i/sun8i_vi_layer.h | 7 +-
drivers/gpu/drm/sun4i/sun8i_vi_scaler.c | 51 ++---
drivers/gpu/drm/sun4i/sun8i_vi_scaler.h | 6 +-
12 files changed, 475 insertions(+), 482 deletions(-)
--
2.51.2
next reply other threads:[~2025-11-04 18:10 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-04 18:09 Jernej Skrabec [this message]
2025-11-04 18:09 ` [PATCH v2 01/30] drm/sun4i: mixer: Fix up DE33 channel macros Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 02/30] drm/sun4i: mixer: Remove ccsc cfg for >= DE3 Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 03/30] drm/sun4i: de2: Initialize layer fields earlier Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 04/30] drm/sun4i: ui_layer: Move check from update to check callback Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 05/30] drm/sun4i: vi_layer: " Jernej Skrabec
2025-11-05 14:51 ` Chen-Yu Tsai
2025-11-04 18:09 ` [PATCH v2 06/30] drm/sun4i: layers: Make atomic commit functions void Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 07/30] drm/sun4i: Move blender config from layers to mixer Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 08/30] drm/sun4i: ui layer: Write attributes in one go Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 09/30] drm/sun4i: vi " Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 10/30] drm/sun4i: mixer: Move layer enabling to atomic_update Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 11/30] drm/sun4i: de2/de3: Simplify CSC config interface Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 12/30] drm/sun4i: csc: Simplify arguments with taking plane state Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 13/30] drm/sun4i: de2/de3: Move plane type determination to mixer Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 14/30] drm/sun4i: ui_layer: Change index meaning Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 15/30] drm/sun4i: layer: move num of planes calc out of layer code Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 16/30] drm/sun4i: ui_layer: use layer struct instead of multiple args Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 17/30] drm/sun4i: vi_layer: " Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 18/30] drm/sun4i: ui_scaler: use layer instead of mixer for args Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 19/30] drm/sun4i: vi_scaler: " Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 20/30] drm/sun4i: layers: Make regmap for layers configurable Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 21/30] drm/sun4i: csc: use layer arg instead of mixer Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 22/30] drm/sun4i: layers: add physical index arg Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 23/30] drm/sun4i: vi_scaler: Update DE33 base calculation Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 24/30] drm/sun4i: mixer: Convert heuristics to quirk Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 25/30] drm/sun4i: ui_scaler: drop sanity checks Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 26/30] drm/sun4i: mixer: Add quirk for number of VI scalers Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 27/30] drm/sun4i: mixer: split out layer config Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 28/30] drm/sun4i: layer: replace mixer with layer struct Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 29/30] drm/sun4i: vi_scaler: Find mixer from crtc Jernej Skrabec
2025-11-04 18:09 ` [PATCH v2 30/30] drm/sun4i: Nuke mixer pointer from layer code Jernej Skrabec
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=20251104180942.61538-1-jernej.skrabec@gmail.com \
--to=jernej.skrabec@gmail.com \
--cc=airlied@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sunxi@lists.linux.dev \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=samuel@sholland.org \
--cc=simona@ffwll.ch \
--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