[PATCH v5 0/2] drm/rockchip: vop: Add NV15, NV20 and NV30 support

From: Jonas Karlman
Date: Mon Oct 23 2023 - 13:47:44 EST


This series add support for displaying 10-bit 4:2:0 and 4:2:2 formats produced
by the Rockchip Video Decoder on RK322X, RK3288, RK3328, RK3368 and RK3399.
Also include 10-bit 4:4:4 support since VOP can support that also.

First patch adds new fourcc 10-bit YUV formats with 4:2:2/4:4:4 sub-sampling.
Second patch adds support for displaying the new fourcc formats.

These patches have been in use by LibreELEC and other distros for the
past 3+ years, hoping they can be merged this time around.

A rough libdrm/modetest patch [2] have been used to validate use of
NV15, NV20 and NV30 formats on RK3288, RK3328 and RK3399 boards.

modetest -s <connector_id>@<crtc_id>:<mode>-<vrefresh>@<format>

Tinker Board R2.0 (rk3288w):
modetest -s 50:1920x1080-60@NV15

Rock Pi 4 (rk3399):
modetest -s 52@44:1920x1080-60@NV15

Rock64 (rk3328):
modetest -s 42:1920x1080-60@NV15

Changes in v5:
- Use drm_format_info_min_pitch() for correct bpp
- Add missing NV21, NV61 and NV42 formats

Changes in v4:
- Rework RK3328/RK3399 win0/1 data to not affect RK3368

Changes in v3:
- No changes, rebased on next-20230616
- R-B tags was collected

Changes in v2:
- Add NV30 format
- R-B tags was not collected due to NV30 changes

This series is also available at [1] and libdrm/modetest patch at [2].

[1] https://github.com/Kwiboo/linux-rockchip/commits/v6.6-rc7-vop-nv15
[2] https://github.com/Kwiboo/libdrm/commits/nv15

Jonas Karlman (2):
drm/fourcc: Add NV20 and NV30 YUV formats
drm/rockchip: vop: Add NV15, NV20 and NV30 support

drivers/gpu/drm/drm_fourcc.c | 8 +++
drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 36 ++++++++---
drivers/gpu/drm/rockchip/rockchip_drm_vop.h | 1 +
drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 66 +++++++++++++++++----
include/uapi/drm/drm_fourcc.h | 2 +
5 files changed, 96 insertions(+), 17 deletions(-)

--
2.42.0