]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: rockchip: rga: remove stride from rga_frame
authorSven Püschel <s.pueschel@pengutronix.de>
Wed, 20 May 2026 22:44:28 +0000 (00:44 +0200)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Thu, 21 May 2026 10:32:21 +0000 (12:32 +0200)
Remove the stride variable from rga_frame. Despite the comment it
didn't involve any calculation and is just a copy of the
plane_fmt[0].bytesperline value. Therefore avoid this struct member
and use the bytesperline value directly in the places where it is
required.

Also drop the dependency on the depth format member, which was only
used to calculate the stride of the default format. This is already done
by the v4l2_fill_pixfmt_mp_aligned helper and used as stride in try_fmt.
Therefore using it's value also for the default format stride is just
more consistent.

Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Sven Püschel <s.pueschel@pengutronix.de>
Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/media/platform/rockchip/rga/rga-hw.c
drivers/media/platform/rockchip/rga/rga.c
drivers/media/platform/rockchip/rga/rga.h

index 73584706a47e2f67e4a8f02212af12f4613b4648..fac3975e2d0cdef45a01e72614e33e41550fc751 100644 (file)
@@ -44,7 +44,7 @@ rga_get_corner_addrs(struct rga_frame *frm, struct rga_addrs *addrs,
        struct rga_addrs *lt, *lb, *rt, *rb;
        const struct v4l2_format_info *format_info;
        unsigned int x_div = 0,
-                    y_div = 0, uv_stride = 0, pixel_width = 0;
+                    y_div = 0, y_stride = 0, uv_stride = 0, pixel_width = 0;
 
        lt = &corner_addrs.left_top;
        lb = &corner_addrs.left_bottom;
@@ -61,14 +61,15 @@ rga_get_corner_addrs(struct rga_frame *frm, struct rga_addrs *addrs,
        else
                x_div = 1;
        y_div = format_info->vdiv;
-       uv_stride = frm->stride / x_div;
-       pixel_width = frm->stride / frm->pix.width;
+       y_stride = frm->pix.plane_fmt[0].bytesperline;
+       uv_stride = y_stride / x_div;
+       pixel_width = y_stride / frm->pix.width;
 
-       lt->y_addr = addrs->y_addr + y * frm->stride + x * pixel_width;
+       lt->y_addr = addrs->y_addr + y * y_stride + x * pixel_width;
        lt->u_addr = addrs->u_addr + (y / y_div) * uv_stride + x / x_div;
        lt->v_addr = addrs->v_addr + (y / y_div) * uv_stride + x / x_div;
 
-       lb->y_addr = lt->y_addr + (h - 1) * frm->stride;
+       lb->y_addr = lt->y_addr + (h - 1) * y_stride;
        lb->u_addr = lt->u_addr + (h / y_div - 1) * uv_stride;
        lb->v_addr = lt->v_addr + (h / y_div - 1) * uv_stride;
 
@@ -169,6 +170,7 @@ static void rga_cmd_set_trans_info(struct rga_ctx *ctx)
        union rga_src_act_info src_act_info;
        union rga_dst_vir_info dst_vir_info;
        union rga_dst_act_info dst_act_info;
+       u32 in_stride, out_stride;
 
        src_h = ctx->in.crop.height;
        src_w = ctx->in.crop.width;
@@ -291,13 +293,15 @@ static void rga_cmd_set_trans_info(struct rga_ctx *ctx)
         * Calculate the framebuffer virtual strides and active size,
         * note that the step of vir_stride / vir_width is 4 byte words
         */
-       src_vir_info.data.vir_stride = ctx->in.stride >> 2;
-       src_vir_info.data.vir_width = ctx->in.stride >> 2;
+       in_stride = ctx->in.pix.plane_fmt[0].bytesperline;
+       src_vir_info.data.vir_stride = in_stride >> 2;
+       src_vir_info.data.vir_width = in_stride >> 2;
 
        src_act_info.data.act_height = src_h - 1;
        src_act_info.data.act_width = src_w - 1;
 
-       dst_vir_info.data.vir_stride = ctx->out.stride >> 2;
+       out_stride = ctx->out.pix.plane_fmt[0].bytesperline;
+       dst_vir_info.data.vir_stride = out_stride >> 2;
        dst_act_info.data.act_height = dst_h - 1;
        dst_act_info.data.act_width = dst_w - 1;
 
@@ -481,97 +485,81 @@ static struct rga_fmt formats[] = {
                .fourcc = V4L2_PIX_FMT_ARGB32,
                .color_swap = RGA_COLOR_ALPHA_SWAP,
                .hw_format = RGA_COLOR_FMT_ABGR8888,
-               .depth = 32,
        },
        {
                .fourcc = V4L2_PIX_FMT_ABGR32,
                .color_swap = RGA_COLOR_RB_SWAP,
                .hw_format = RGA_COLOR_FMT_ABGR8888,
-               .depth = 32,
        },
        {
                .fourcc = V4L2_PIX_FMT_XBGR32,
                .color_swap = RGA_COLOR_RB_SWAP,
                .hw_format = RGA_COLOR_FMT_XBGR8888,
-               .depth = 32,
        },
        {
                .fourcc = V4L2_PIX_FMT_RGB24,
                .color_swap = RGA_COLOR_NONE_SWAP,
                .hw_format = RGA_COLOR_FMT_RGB888,
-               .depth = 24,
        },
        {
                .fourcc = V4L2_PIX_FMT_BGR24,
                .color_swap = RGA_COLOR_RB_SWAP,
                .hw_format = RGA_COLOR_FMT_RGB888,
-               .depth = 24,
        },
        {
                .fourcc = V4L2_PIX_FMT_ARGB444,
                .color_swap = RGA_COLOR_RB_SWAP,
                .hw_format = RGA_COLOR_FMT_ABGR4444,
-               .depth = 16,
        },
        {
                .fourcc = V4L2_PIX_FMT_ARGB555,
                .color_swap = RGA_COLOR_RB_SWAP,
                .hw_format = RGA_COLOR_FMT_ABGR1555,
-               .depth = 16,
        },
        {
                .fourcc = V4L2_PIX_FMT_RGB565,
                .color_swap = RGA_COLOR_RB_SWAP,
                .hw_format = RGA_COLOR_FMT_BGR565,
-               .depth = 16,
        },
        {
                .fourcc = V4L2_PIX_FMT_NV21,
                .color_swap = RGA_COLOR_UV_SWAP,
                .hw_format = RGA_COLOR_FMT_YUV420SP,
-               .depth = 12,
        },
        {
                .fourcc = V4L2_PIX_FMT_NV61,
                .color_swap = RGA_COLOR_UV_SWAP,
                .hw_format = RGA_COLOR_FMT_YUV422SP,
-               .depth = 16,
        },
        {
                .fourcc = V4L2_PIX_FMT_NV12,
                .color_swap = RGA_COLOR_NONE_SWAP,
                .hw_format = RGA_COLOR_FMT_YUV420SP,
-               .depth = 12,
        },
        {
                .fourcc = V4L2_PIX_FMT_NV12M,
                .color_swap = RGA_COLOR_NONE_SWAP,
                .hw_format = RGA_COLOR_FMT_YUV420SP,
-               .depth = 12,
        },
        {
                .fourcc = V4L2_PIX_FMT_NV16,
                .color_swap = RGA_COLOR_NONE_SWAP,
                .hw_format = RGA_COLOR_FMT_YUV422SP,
-               .depth = 16,
        },
        {
                .fourcc = V4L2_PIX_FMT_YUV420,
                .color_swap = RGA_COLOR_NONE_SWAP,
                .hw_format = RGA_COLOR_FMT_YUV420P,
-               .depth = 12,
        },
        {
                .fourcc = V4L2_PIX_FMT_YUV422P,
                .color_swap = RGA_COLOR_NONE_SWAP,
                .hw_format = RGA_COLOR_FMT_YUV422P,
-               .depth = 16,
        },
        {
                .fourcc = V4L2_PIX_FMT_YVU420,
                .color_swap = RGA_COLOR_UV_SWAP,
                .hw_format = RGA_COLOR_FMT_YUV420P,
-               .depth = 12,
        },
 };
 
index e44e81814b7cbb93110d5a008468ab451375df5e..e52d0577b236c945eb7ce58e530f44de9a7524fe 100644 (file)
@@ -267,8 +267,6 @@ static int rga_open(struct file *file)
                .fmt = &rga->hw->formats[0],
        };
 
-       def_frame.stride = (def_width * def_frame.fmt->depth) >> 3;
-
        ctx = kzalloc_obj(*ctx);
        if (!ctx)
                return -ENOMEM;
@@ -481,7 +479,6 @@ static int vidioc_s_fmt(struct file *file, void *priv, struct v4l2_format *f)
        if (IS_ERR(frm))
                return PTR_ERR(frm);
        frm->fmt = rga_fmt_find(rga, pix_fmt->pixelformat);
-       frm->stride = pix_fmt->plane_fmt[0].bytesperline;
 
        /*
         * Copy colorimetry from output to capture as required by the
@@ -507,7 +504,7 @@ static int vidioc_s_fmt(struct file *file, void *priv, struct v4l2_format *f)
                 "[%s] fmt - %p4cc %dx%d (stride %d)\n",
                  V4L2_TYPE_IS_OUTPUT(f->type) ? "OUTPUT" : "CAPTURE",
                  &frm->fmt->fourcc, pix_fmt->width, pix_fmt->height,
-                 frm->stride);
+                 pix_fmt->plane_fmt[0].bytesperline);
 
        for (i = 0; i < pix_fmt->num_planes; i++) {
                v4l2_dbg(debug, 1, &rga->v4l2_dev,
index d47c6821ce2c93c9218dea54b7a4e6ebd9c73fde..227ab6c0532c2d0586dc07d87dda27c19b6cce3c 100644 (file)
@@ -19,7 +19,6 @@
 
 struct rga_fmt {
        u32 fourcc;
-       int depth;
        u8 color_swap;
        u8 hw_format;
 };
@@ -31,9 +30,6 @@ struct rga_frame {
        /* Image format */
        struct rga_fmt *fmt;
        struct v4l2_pix_format_mplane pix;
-
-       /* Variables that can calculated once and reused */
-       u32 stride;
 };
 
 struct rga_dma_desc {