On Thu May 21 00:44:28 2026 +0200, Sven Püschel wrote:
> 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 <[email protected]>
> Signed-off-by: Sven Püschel <[email protected]>
> Signed-off-by: Nicolas Dufresne <[email protected]>
> Signed-off-by: Hans Verkuil <[email protected]>

Patch committed.

Thanks,
Hans Verkuil

 drivers/media/platform/rockchip/rga/rga-hw.c | 36 ++++++++++------------------
 drivers/media/platform/rockchip/rga/rga.c    |  5 +---
 drivers/media/platform/rockchip/rga/rga.h    |  4 ----
 3 files changed, 13 insertions(+), 32 deletions(-)

---

diff --git a/drivers/media/platform/rockchip/rga/rga-hw.c 
b/drivers/media/platform/rockchip/rga/rga-hw.c
index 73584706a47e..fac3975e2d0c 100644
--- a/drivers/media/platform/rockchip/rga/rga-hw.c
+++ b/drivers/media/platform/rockchip/rga/rga-hw.c
@@ -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,
        },
 };
 
diff --git a/drivers/media/platform/rockchip/rga/rga.c 
b/drivers/media/platform/rockchip/rga/rga.c
index e44e81814b7c..e52d0577b236 100644
--- a/drivers/media/platform/rockchip/rga/rga.c
+++ b/drivers/media/platform/rockchip/rga/rga.c
@@ -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,
diff --git a/drivers/media/platform/rockchip/rga/rga.h 
b/drivers/media/platform/rockchip/rga/rga.h
index d47c6821ce2c..227ab6c0532c 100644
--- a/drivers/media/platform/rockchip/rga/rga.h
+++ b/drivers/media/platform/rockchip/rga/rga.h
@@ -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 {
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to