From nobody Tue Feb 10 04:17:34 2026 Received: from metis.whiteo.stw.pengutronix.de (metis.whiteo.stw.pengutronix.de [185.203.201.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8DC6035E552 for ; Tue, 27 Jan 2026 14:40:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.203.201.7 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769524848; cv=none; b=MhTZ8YLzo49vFjhW4OmE6s99P+3OjDcPGDDlqEJ75fZ2oNx9k4Ag++tRVe1pPgjSDgQ21y68oOtMhOu6VmKqteSmn4K6ea5rWRIMYpc8RcrJC8jdNDLP+tWRHFKv2GEaJ3y2InX1m2vpWhsVSKYiIb367fORwKqFyBZyMvLIg3M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769524848; c=relaxed/simple; bh=7dNDc9Ziln25yF+Cbc+nUGgZJbeEAX0pdbqLQFauSEI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=o2cn60W+HkDKbORyOV1WLOrEI34iqWEdKW1/wuhmssmumNr4OoOHop06YVQnHSQZBT+F8IFYC6FE410CLCOCWBVo71EOsgg4WdjsnTAmJEjgbs+R2TmGRtl4rL4IZ7ByttZEhu7sNfBWXbsjtxWdr3mFf5fETbdwkg9ufwKeZ1E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=pengutronix.de; spf=pass smtp.mailfrom=pengutronix.de; arc=none smtp.client-ip=185.203.201.7 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=pengutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pengutronix.de Received: from ptz.office.stw.pengutronix.de ([2a0a:edc0:0:900:1d::77] helo=peter.mobile.pengutronix.de) by metis.whiteo.stw.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1vkkFI-0007YT-GJ; Tue, 27 Jan 2026 15:40:44 +0100 From: =?utf-8?q?Sven_P=C3=BCschel?= Date: Tue, 27 Jan 2026 15:39:30 +0100 Subject: [PATCH v3 21/27] media: rockchip: rga: remove size from rga_frame Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260127-spu-rga3-v3-21-77b273067beb@pengutronix.de> References: <20260127-spu-rga3-v3-0-77b273067beb@pengutronix.de> In-Reply-To: <20260127-spu-rga3-v3-0-77b273067beb@pengutronix.de> To: Jacob Chen , Ezequiel Garcia , Mauro Carvalho Chehab , Heiko Stuebner , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, kernel@pengutronix.de, =?utf-8?q?Sven_P=C3=BCschel?= X-Mailer: b4 0.14.3 X-SA-Exim-Connect-IP: 2a0a:edc0:0:900:1d::77 X-SA-Exim-Mail-From: s.pueschel@pengutronix.de X-SA-Exim-Scanned: No (on metis.whiteo.stw.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org The size member is only used for the mmu page table mapping. Therefore avoid storing the value and instead only calculate it in place. This also avoids the calculation entirely when an external iommu is used. Signed-off-by: Sven P=C3=BCschel --- drivers/media/platform/rockchip/rga/rga-buf.c | 6 +++++- drivers/media/platform/rockchip/rga/rga.c | 8 ++------ drivers/media/platform/rockchip/rga/rga.h | 1 - 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/drivers/media/platform/rockchip/rga/rga-buf.c b/drivers/media/= platform/rockchip/rga/rga-buf.c index 4e82ca1a5e8d9..c0cc885ba58a8 100644 --- a/drivers/media/platform/rockchip/rga/rga-buf.c +++ b/drivers/media/platform/rockchip/rga/rga-buf.c @@ -79,6 +79,8 @@ static int rga_buf_init(struct vb2_buffer *vb) struct rockchip_rga *rga =3D ctx->rga; struct rga_frame *f =3D rga_get_frame(ctx, vb->vb2_queue->type); size_t n_desc =3D 0; + u32 size =3D 0; + u8 i; =20 if (IS_ERR(f)) return PTR_ERR(f); @@ -86,7 +88,9 @@ static int rga_buf_init(struct vb2_buffer *vb) if (!rga_has_internal_iommu(rga)) return 0; =20 - n_desc =3D DIV_ROUND_UP(f->size, PAGE_SIZE); + for (i =3D 0; i < f->pix.num_planes; i++) + size +=3D f->pix.plane_fmt[i].sizeimage; + n_desc =3D DIV_ROUND_UP(size, PAGE_SIZE); =20 rbuf->n_desc =3D n_desc; rbuf->dma_desc =3D dma_alloc_coherent(rga->dev, diff --git a/drivers/media/platform/rockchip/rga/rga.c b/drivers/media/plat= form/rockchip/rga/rga.c index b2ee59235d1e3..59463c7f26b6f 100644 --- a/drivers/media/platform/rockchip/rga/rga.c +++ b/drivers/media/platform/rockchip/rga/rga.c @@ -221,7 +221,6 @@ static int rga_open(struct file *file) }; =20 def_frame.stride =3D (def_width * def_frame.fmt->depth) >> 3; - def_frame.size =3D def_frame.stride * def_height; =20 ctx =3D kzalloc(sizeof(*ctx), GFP_KERNEL); if (!ctx) @@ -459,9 +458,6 @@ static int vidioc_s_fmt(struct file *file, void *priv, = struct v4l2_format *f) frm =3D rga_get_frame(ctx, f->type); if (IS_ERR(frm)) return PTR_ERR(frm); - frm->size =3D 0; - for (i =3D 0; i < pix_fmt->num_planes; i++) - frm->size +=3D pix_fmt->plane_fmt[i].sizeimage; frm->fmt =3D rga_fmt_find(rga, pix_fmt->pixelformat); frm->stride =3D pix_fmt->plane_fmt[0].bytesperline; =20 @@ -485,10 +481,10 @@ static int vidioc_s_fmt(struct file *file, void *priv= , struct v4l2_format *f) frm->pix =3D *pix_fmt; =20 v4l2_dbg(debug, 1, &rga->v4l2_dev, - "[%s] fmt - %p4cc %dx%d (stride %d, sizeimage %d)\n", + "[%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, frm->size); + frm->stride); =20 for (i =3D 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/plat= form/rockchip/rga/rga.h index 95fa7fd1c509a..2838fc7785f72 100644 --- a/drivers/media/platform/rockchip/rga/rga.h +++ b/drivers/media/platform/rockchip/rga/rga.h @@ -34,7 +34,6 @@ struct rga_frame { =20 /* Variables that can calculated once and reused */ u32 stride; - u32 size; }; =20 struct rga_dma_desc { --=20 2.52.0