[PATCH v3 7/7] drm: rcar-du: Add new formats (2-10-10-10 ARGB, Y210)
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Mon Dec 26 14:44:00 UTC 2022
Hi Tomi,
Thank you for the patch.
On Wed, Dec 21, 2022 at 11:24:48AM +0200, Tomi Valkeinen wrote:
> Add new pixel formats: RGBX1010102, RGBA1010102, ARGB2101010, Y210 and
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> Y212.
>
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen+renesas at ideasonboard.com>
> ---
> drivers/gpu/drm/rcar-du/rcar_du_kms.c | 30 ++++++++++++++++
> drivers/gpu/drm/rcar-du/rcar_du_vsp.c | 50 +++++++++++++++++++++++++--
> 2 files changed, 78 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_kms.c b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
> index 8c2719efda2a..adfb36b0e815 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_kms.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
> @@ -259,6 +259,24 @@ static const struct rcar_du_format_info rcar_du_format_infos[] = {
> .bpp = 32,
> .planes = 1,
> .hsub = 1,
> + }, {
> + .fourcc = DRM_FORMAT_RGBX1010102,
> + .v4l2 = V4L2_PIX_FMT_RGBX1010102,
> + .bpp = 32,
> + .planes = 1,
> + .hsub = 1,
> + }, {
> + .fourcc = DRM_FORMAT_RGBA1010102,
> + .v4l2 = V4L2_PIX_FMT_RGBA1010102,
> + .bpp = 32,
> + .planes = 1,
> + .hsub = 1,
> + }, {
> + .fourcc = DRM_FORMAT_ARGB2101010,
> + .v4l2 = V4L2_PIX_FMT_ARGB2101010,
> + .bpp = 32,
> + .planes = 1,
> + .hsub = 1,
> }, {
> .fourcc = DRM_FORMAT_YVYU,
> .v4l2 = V4L2_PIX_FMT_YVYU,
> @@ -307,6 +325,18 @@ static const struct rcar_du_format_info rcar_du_format_infos[] = {
> .bpp = 24,
> .planes = 3,
> .hsub = 1,
> + }, {
> + .fourcc = DRM_FORMAT_Y210,
> + .v4l2 = V4L2_PIX_FMT_Y210,
> + .bpp = 32,
> + .planes = 1,
> + .hsub = 2,
> + }, {
> + .fourcc = DRM_FORMAT_Y212,
> + .v4l2 = V4L2_PIX_FMT_Y212,
> + .bpp = 32,
> + .planes = 1,
> + .hsub = 2,
> },
> };
>
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_vsp.c b/drivers/gpu/drm/rcar-du/rcar_du_vsp.c
> index e465aef41585..fe90be51d64e 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_vsp.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_vsp.c
> @@ -139,6 +139,43 @@ static const u32 rcar_du_vsp_formats[] = {
> DRM_FORMAT_YVU444,
> };
>
> +/*
> + * Gen4 supports the same formats as above, and additionally 2-10-10-10 RGB
> + * formats and Y210 & Y212 formats.
> + */
> +static const u32 rcar_du_vsp_formats_gen4[] = {
> + DRM_FORMAT_RGB332,
> + DRM_FORMAT_ARGB4444,
> + DRM_FORMAT_XRGB4444,
> + DRM_FORMAT_ARGB1555,
> + DRM_FORMAT_XRGB1555,
> + DRM_FORMAT_RGB565,
> + DRM_FORMAT_BGR888,
> + DRM_FORMAT_RGB888,
> + DRM_FORMAT_BGRA8888,
> + DRM_FORMAT_BGRX8888,
> + DRM_FORMAT_ARGB8888,
> + DRM_FORMAT_XRGB8888,
> + DRM_FORMAT_RGBX1010102,
> + DRM_FORMAT_RGBA1010102,
> + DRM_FORMAT_ARGB2101010,
> + DRM_FORMAT_UYVY,
> + DRM_FORMAT_YUYV,
> + DRM_FORMAT_YVYU,
> + DRM_FORMAT_NV12,
> + DRM_FORMAT_NV21,
> + DRM_FORMAT_NV16,
> + DRM_FORMAT_NV61,
> + DRM_FORMAT_YUV420,
> + DRM_FORMAT_YVU420,
> + DRM_FORMAT_YUV422,
> + DRM_FORMAT_YVU422,
> + DRM_FORMAT_YUV444,
> + DRM_FORMAT_YVU444,
> + DRM_FORMAT_Y210,
> + DRM_FORMAT_Y212,
> +};
> +
> static void rcar_du_vsp_plane_setup(struct rcar_du_vsp_plane *plane)
> {
> struct rcar_du_vsp_plane_state *state =
> @@ -436,14 +473,23 @@ int rcar_du_vsp_init(struct rcar_du_vsp *vsp, struct device_node *np,
> ? DRM_PLANE_TYPE_PRIMARY
> : DRM_PLANE_TYPE_OVERLAY;
> struct rcar_du_vsp_plane *plane = &vsp->planes[i];
> + unsigned int num_formats;
> + const u32 *formats;
> +
> + if (rcdu->info->gen < 4) {
> + num_formats = ARRAY_SIZE(rcar_du_vsp_formats);
> + formats = rcar_du_vsp_formats;
> + } else {
> + num_formats = ARRAY_SIZE(rcar_du_vsp_formats_gen4);
> + formats = rcar_du_vsp_formats_gen4;
> + }
>
> plane->vsp = vsp;
> plane->index = i;
>
> ret = drm_universal_plane_init(&rcdu->ddev, &plane->plane,
> crtcs, &rcar_du_vsp_plane_funcs,
> - rcar_du_vsp_formats,
> - ARRAY_SIZE(rcar_du_vsp_formats),
> + formats, num_formats,
> NULL, type, NULL);
> if (ret < 0)
> return ret;
--
Regards,
Laurent Pinchart
More information about the dri-devel
mailing list