On 2023-11-14 12:28, Andy Yan wrote: > From: Andy Yan <andy.yan@xxxxxxxxxxxxxx> > > VOP2 on rk3588: > > Four video ports: > VP0 Max 4096x2160 > VP1 Max 4096x2160 > VP2 Max 4096x2160 > VP3 Max 2048x1080 > > 4 4K Cluster windows with AFBC/line RGB and AFBC-only YUV support > 4 4K Esmart windows with line RGB/YUV support > > Signed-off-by: Andy Yan <andy.yan@xxxxxxxxxxxxxx> > --- > > drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 324 ++++++++++++++++++- > drivers/gpu/drm/rockchip/rockchip_drm_vop2.h | 57 ++++ > drivers/gpu/drm/rockchip/rockchip_vop2_reg.c | 215 ++++++++++++ > include/dt-bindings/soc/rockchip,vop2.h | 4 + > 4 files changed, 593 insertions(+), 7 deletions(-) > [...] > diff --git a/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c > index 22288ad7f326..4745a9260cf8 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c > +++ b/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c > @@ -34,6 +34,28 @@ static const uint32_t formats_cluster[] = { > DRM_FORMAT_Y210, /* yuv422_10bit non-Linear mode only */ > }; > > +static const uint32_t formats_esmart[] = { > + DRM_FORMAT_XRGB8888, > + DRM_FORMAT_ARGB8888, > + DRM_FORMAT_XBGR8888, > + DRM_FORMAT_ABGR8888, > + DRM_FORMAT_RGB888, > + DRM_FORMAT_BGR888, > + DRM_FORMAT_RGB565, > + DRM_FORMAT_BGR565, > + DRM_FORMAT_NV12, /* yuv420_8bit linear mode, 2 plane */ > + DRM_FORMAT_NV21, /* yvu420_8bit linear mode, 2 plane */ > + DRM_FORMAT_NV16, /* yuv422_8bit linear mode, 2 plane */ > + DRM_FORMAT_NV61, /* yvu422_8bit linear mode, 2 plane */ > + DRM_FORMAT_NV24, /* yuv444_8bit linear mode, 2 plane */ > + DRM_FORMAT_NV42, /* yvu444_8bit linear mode, 2 plane */ > + DRM_FORMAT_NV15, /* yuv420_10bit linear mode, 2 plane, no padding */ NV20 and NV30 drm format have now been merged into mainline linux, please add these missing formats. The patch below adds support for them to rk356x part of vop2 driver. drm/rockchip: vop2: Add NV20 and NV30 support https://lore.kernel.org/linux-rockchip/20231025213248.2641962-1-jonas@xxxxxxxxx/ NV15/NV20/NV30 formats can be tested using modetest from latest main of libdrm. modetest: add support for DRM_FORMAT_NV{15,20,30} https://gitlab.freedesktop.org/mesa/drm/-/merge_requests/329 Regards, Jonas > + DRM_FORMAT_YVYU, /* yuv422_8bit[YVYU] linear mode */ > + DRM_FORMAT_VYUY, /* yuv422_8bit[VYUY] linear mode */ > + DRM_FORMAT_YUYV, /* yuv422_8bit[YUYV] linear mode */ > + DRM_FORMAT_UYVY, /* yuv422_8bit[UYVY] linear mode */ > +}; > + > static const uint32_t formats_rk356x_esmart[] = { > DRM_FORMAT_XRGB8888, > DRM_FORMAT_ARGB8888, [...]