[PATCH 01/17] media: rockchip: rga: zero cmdbuf in shared code

From: Sven Püschel

Date: Fri Jun 05 2026 - 18:14:17 EST


Zero the command buffer (cmdbuf) in the shared code instead of the
individual RGA2/RGA3 implementations. Besides centralizing the memset
operation this also uses the cmdbuf_size member for the memset size,
which is also used as the size for the actual allocation.

Signed-off-by: Sven Püschel <s.pueschel@xxxxxxxxxxxxxx>
---
drivers/media/platform/rockchip/rga/rga-hw.c | 2 --
drivers/media/platform/rockchip/rga/rga.c | 1 +
drivers/media/platform/rockchip/rga/rga.h | 3 +++
drivers/media/platform/rockchip/rga/rga3-hw.c | 2 --
4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/media/platform/rockchip/rga/rga-hw.c b/drivers/media/platform/rockchip/rga/rga-hw.c
index be1bc8ddbd03b..4d7b0a03820a1 100644
--- a/drivers/media/platform/rockchip/rga/rga-hw.c
+++ b/drivers/media/platform/rockchip/rga/rga-hw.c
@@ -443,8 +443,6 @@ static void rga_cmd_set(struct rga_ctx *ctx,

static void rga_hw_setup_cmdbuf(struct rga_ctx *ctx)
{
- memset(ctx->cmdbuf_virt, 0, RGA_CMDBUF_SIZE);
-
rga_cmd_set_mode(ctx);
rga_cmd_set_trans_info(ctx);
}
diff --git a/drivers/media/platform/rockchip/rga/rga.c b/drivers/media/platform/rockchip/rga/rga.c
index b3cb6bf8eb863..bd0afd33affe4 100644
--- a/drivers/media/platform/rockchip/rga/rga.c
+++ b/drivers/media/platform/rockchip/rga/rga.c
@@ -41,6 +41,7 @@ static void device_run(void *prv)
spin_lock_irqsave(&rga->ctrl_lock, flags);
if (ctx->cmdbuf_dirty) {
ctx->cmdbuf_dirty = false;
+ memset(ctx->cmdbuf_virt, 0, rga->hw->cmdbuf_size);
rga->hw->setup_cmdbuf(ctx);
}
spin_unlock_irqrestore(&rga->ctrl_lock, flags);
diff --git a/drivers/media/platform/rockchip/rga/rga.h b/drivers/media/platform/rockchip/rga/rga.h
index bd431534d0d39..2b4f5694375a4 100644
--- a/drivers/media/platform/rockchip/rga/rga.h
+++ b/drivers/media/platform/rockchip/rga/rga.h
@@ -152,6 +152,9 @@ struct rga_hw {
u8 stride_alignment;
u8 features;

+ /*
+ * Requires that the cmdbuf is already zeroed.
+ */
void (*setup_cmdbuf)(struct rga_ctx *ctx);
void (*start)(struct rockchip_rga *rga,
struct rga_vb_buffer *src, struct rga_vb_buffer *dst);
diff --git a/drivers/media/platform/rockchip/rga/rga3-hw.c b/drivers/media/platform/rockchip/rga/rga3-hw.c
index ca1c268303dd4..72741e1faccff 100644
--- a/drivers/media/platform/rockchip/rga/rga3-hw.c
+++ b/drivers/media/platform/rockchip/rga/rga3-hw.c
@@ -261,8 +261,6 @@ static void rga3_cmd_set_wr_format(struct rga_ctx *ctx)

static void rga3_hw_setup_cmdbuf(struct rga_ctx *ctx)
{
- memset(ctx->cmdbuf_virt, 0, RGA3_CMDBUF_SIZE);
-
rga3_cmd_set_win0_format(ctx);
rga3_cmd_set_trans_info(ctx);
rga3_cmd_set_wr_format(ctx);

--
2.54.0