Hi All,

v7 of this patch adding support for the Allwinner DE33 display engine, used in 
the H616 family of SoCs. Apologies for the short interval between versions but 
a compile error due to a missed helper function in patch 11 snuck by me. v7 
only differs from v6 in adding this back.

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

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             | 345 +++++++++++++++---
 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, 1306 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

Reply via email to