From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qk1-f181.google.com (mail-qk1-f181.google.com [209.85.222.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CADA530FF36 for ; Fri, 20 Mar 2026 17:48:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.181 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774028883; cv=none; b=MEPsPgbb9jmupfbXtUHaPjbjmK8pnEZUpOfl5gWf5AhtHYF8XuwJL5CuGbwXKaurNL3BlsUoqIY4v5ssQPVEO2v8xEitPH7IAPa+5zXptUSnapI37RLdey9ujkgBLpk3xOUQYe5l2+dCeds/n1pJ3gQAx12z8svimDrHiks447U= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774028883; c=relaxed/simple; bh=ppq+woC9EgkhRjYSo1FqN2MHY1nF7CaPwY54og0DPeI=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=UT9pk7ysXF3olOICLtjgvSeEukKp6AaYrJcQ08xwnCyB90ADN81C5J5iNEahI1BgdIpfZEUo6blMCVMn3zlMRc9gGCQPieIfH7wlXeLwzmYVSaw6URToW2TPfWFCpoEBbab2+DX3bCxDALJgJTGdXVwd3Cf2PL0DVign6lq4/Cg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ndufresne.ca; spf=pass smtp.mailfrom=ndufresne.ca; dkim=pass (2048-bit key) header.d=ndufresne-ca.20230601.gappssmtp.com header.i=@ndufresne-ca.20230601.gappssmtp.com header.b=29MIeji3; arc=none smtp.client-ip=209.85.222.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ndufresne.ca Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ndufresne.ca Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ndufresne-ca.20230601.gappssmtp.com header.i=@ndufresne-ca.20230601.gappssmtp.com header.b="29MIeji3" Received: by mail-qk1-f181.google.com with SMTP id af79cd13be357-8cfd44fa075so33874985a.0 for ; Fri, 20 Mar 2026 10:48:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ndufresne-ca.20230601.gappssmtp.com; s=20230601; t=1774028879; x=1774633679; darn=vger.kernel.org; h=mime-version:user-agent:autocrypt:references:in-reply-to:date:cc:to :from:subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=H3CCOGtwXJ4+/c4xKC51d2CLIBrX+gi1qbIE0AmJJek=; b=29MIeji3wcAUyjalld6XNdMhxmq/r0teA0tSUIs6sagTvI4bdM8Mi8xg7f3dGGph+l VXMCnt/pHigMsNDH8AC1q1wnUwFVBxZUq3+DR3hEfCUu/xD20gkScAZKXLWw577eVbWg 4BnLScKTOS34uztu2KQeLWzNGOBrpsNP9mDrCr47DecZYN4q75ZvoPF79U6mXlZijVl0 vcYM0DhCzwUgVKt5Q3mFPXZprVixowOXN2kSQ/HtXeM651GP3LBiiaNFHjUFAk/4ihUV QGUKDVaOm0dm5+p1plO76b4g6rYHXUP0XwNDfb8XrU5g/NIHAmf/b7nyy9mgFHBWWT+v wbPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774028879; x=1774633679; h=mime-version:user-agent:autocrypt:references:in-reply-to:date:cc:to :from:subject:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=H3CCOGtwXJ4+/c4xKC51d2CLIBrX+gi1qbIE0AmJJek=; b=TFNrNOoKCKQ5vBL7Lz5ayVuZ2oeUZdfptLjhyp4apmlFe1mdjqtObBzu0sreSb7zsF P4om7AsbBPrSxWaToJ8NxL6fqBIitHKtI1TAmXInE3t/uMHeRDVkoWNx30dLMix+ug/B aI0OQ0jWwy0ck4XlVogVQasBlMRaP8q/uzq4fUHwV+t097cbfHcnc0O/kbg8Co6Eq7Wk pRIhSF823epi9eC0n687jsybRYSa5jVjob+8feNENl1UX0J4SutzCiY9vrv7rt6pnLmn gozIILcI4TMiN8Wgt2zI9SR4aClPn94gR0VBeNlMcAeeB6s2ZRmfCIiM9u0zW0pvS5aL /7rQ== X-Forwarded-Encrypted: i=1; AJvYcCXg9NpwbpVs+tyRG8cLZjl1LegcUgn7d9MXNim0x6W50Imm1GNITz/ebkZtrNVUEXBohIiDfWaZy3ImSzw=@vger.kernel.org X-Gm-Message-State: AOJu0Yx+lWNTn75BOtQitDBf585DnIWEDDlyqeXndgAbfggIMa7+5WEf U9Q7M/RvpmQzRemQC5432edxHeHbOCNNsJh54kWDDRPZih7p4shZz3Do1DNmx5wm2jk= X-Gm-Gg: ATEYQzzUyRKxF4WwuZczwYijZDzQEvLI41AKBsbJ7sJlNvp4rpBbkqyHnkkQJWMm4Wn 9w9IhPbJCBFgMiN1WRtcbjrS2yf3rgw5Zxv87L1HA/YSweH0ajyBEhAQO6nea8lgRZpbKnAiQVq iFxsVYTJCOKFKowR74PAgrfE3yBPRc1G+TucCKZLqDYgb69l1M+iAnEM4pAF/QpMdJY45M11aQJ nUJqpeu6xm/6CQA/FDEZFzG/JRJxgRXXcQ5n5DCBnkKLtNE2eGgqwQQx2EEdRDqr+l+O1Cl9lEv bt5cKthROJFnqq7Hu0686rwJVHmC1NQDuLhKjHAsZcdrnFoqMfjC/0O7qwmf2LHggHu3l0Nkovw Yr3lgZP3hpWvdi5gjNH0/e6H7KNJo+Nz+S6mGU4KdNfsNDd19vYXXI+7m7QVMaveIifeNVmFdNY BbrEPuD0KryvxzLN2hNkSwJ0BTt8mpxHLZnZ4Uw2E= X-Received: by 2002:a05:620a:1a29:b0:8cd:982d:411d with SMTP id af79cd13be357-8cfc7f6c676mr563879485a.52.1774028879543; Fri, 20 Mar 2026 10:47:59 -0700 (PDT) Received: from ?IPv6:2606:6d00:11:b76d::5ac? ([2606:6d00:11:b76d::5ac]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-89c85214a43sm25647846d6.6.2026.03.20.10.47.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Mar 2026 10:47:58 -0700 (PDT) Message-ID: Subject: Re: [PATCH v3 11/27] media: rockchip: rga: avoid odd frame sizes for YUV formats From: Nicolas Dufresne To: Sven =?ISO-8859-1?Q?P=FCschel?= , 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 Date: Fri, 20 Mar 2026 13:47:57 -0400 In-Reply-To: <20260127-spu-rga3-v3-11-77b273067beb@pengutronix.de> References: <20260127-spu-rga3-v3-0-77b273067beb@pengutronix.de> <20260127-spu-rga3-v3-11-77b273067beb@pengutronix.de> Autocrypt: addr=nicolas@ndufresne.ca; prefer-encrypt=mutual; keydata=mDMEaCN2ixYJKwYBBAHaRw8BAQdAM0EHepTful3JOIzcPv6ekHOenE1u0vDG1gdHFrChD /e0J05pY29sYXMgRHVmcmVzbmUgPG5pY29sYXNAbmR1ZnJlc25lLmNhPoicBBMWCgBEAhsDBQsJCA cCAiICBhUKCQgLAgQWAgMBAh4HAheABQkJZfd1FiEE7w1SgRXEw8IaBG8S2UGUUSlgcvQFAmibrjo CGQEACgkQ2UGUUSlgcvQlQwD/RjpU1SZYcKG6pnfnQ8ivgtTkGDRUJ8gP3fK7+XUjRNIA/iXfhXMN abIWxO2oCXKf3TdD7aQ4070KO6zSxIcxgNQFtDFOaWNvbGFzIER1ZnJlc25lIDxuaWNvbGFzLmR1Z nJlc25lQGNvbGxhYm9yYS5jb20+iJkEExYKAEECGwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4 AWIQTvDVKBFcTDwhoEbxLZQZRRKWBy9AUCaCyyxgUJCWX3dQAKCRDZQZRRKWBy9ARJAP96pFmLffZ smBUpkyVBfFAf+zq6BJt769R0al3kHvUKdgD9G7KAHuioxD2v6SX7idpIazjzx8b8rfzwTWyOQWHC AAS0LU5pY29sYXMgRHVmcmVzbmUgPG5pY29sYXMuZHVmcmVzbmVAZ21haWwuY29tPoiZBBMWCgBBF iEE7w1SgRXEw8IaBG8S2UGUUSlgcvQFAmibrGYCGwMFCQll93UFCwkIBwICIgIGFQoJCAsCBBYCAw ECHgcCF4AACgkQ2UGUUSlgcvRObgD/YnQjfi4+L8f4fI7p1pPMTwRTcaRdy6aqkKEmKsCArzQBAK8 bRLv9QjuqsE6oQZra/RB4widZPvphs78H0P6NmpIJ Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-aiCC/tPL3UyCTVFf/HVn" User-Agent: Evolution 3.58.3 (3.58.3-1.fc43) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 --=-aiCC/tPL3UyCTVFf/HVn Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Le mardi 27 janvier 2026 =C3=A0 15:39 +0100, Sven P=C3=BCschel a =C3=A9crit= =C2=A0: > Avoid odd frame sizes for YUV formats, as they may cause undefined > behavior. This is done in preparation for the RGA3, which hangs when the > output format is set to 129x129 pixel YUV420 SP (NV12). >=20 > This requirement is documented explicitly for the RGA3 in=C2=A0 section 5= .6.3 > of the RK3588 TRM Part 2. For the RGA2 the RK3588 TRM Part 2 > (section 6.1.2) and RK3568 TRM Part 2 (section 14.2) only mentions the > x/y offsets and stride aligning requirements. But the vendor driver for > the RGA2 also contains checks for the width and height to be aligned to > 2 bytes. >=20 > Signed-off-by: Sven P=C3=BCschel > --- > =C2=A0drivers/media/platform/rockchip/rga/rga.c | 19 ++++++++++++++----- > =C2=A01 file changed, 14 insertions(+), 5 deletions(-) >=20 > diff --git a/drivers/media/platform/rockchip/rga/rga.c b/drivers/media/pl= atform/rockchip/rga/rga.c > index 21a3c6cd38dbc..4fa6adb10b7ee 100644 > --- a/drivers/media/platform/rockchip/rga/rga.c > +++ b/drivers/media/platform/rockchip/rga/rga.c > @@ -337,6 +337,19 @@ static int vidioc_try_fmt(struct file *file, void *p= riv, struct v4l2_format *f) > =C2=A0 struct rga_ctx *ctx =3D file_to_rga_ctx(file); > =C2=A0 const struct rga_hw *hw =3D ctx->rga->hw; > =C2=A0 struct rga_fmt *fmt; > + struct v4l2_frmsize_stepwise frmsize =3D { > + .min_width =3D hw->min_width, > + .max_width =3D hw->max_width, > + .min_height =3D hw->min_height, > + .max_height =3D hw->max_height, > + .step_width =3D 1, > + .step_height =3D 1, > + }; > + > + if (v4l2_is_format_yuv(v4l2_format_info(pix_fmt->pixelformat))) { > + frmsize.step_width =3D 2; > + frmsize.step_height =3D 2; For V4L2_PIX_FMT_YUV422P and NV16 this is 2/1. I believe you can generalize= this with the format info, and skip this conditions: .step_with =3D info->vdiv, .step_height =3D info->hdiv Though, I'm saying that from a pixel format perspective, if the HW needs 2/= 2 for all YUV formats, let me know, I'll give my Rb. Nicolas > + } > =C2=A0 > =C2=A0 if (V4L2_TYPE_IS_CAPTURE(f->type)) { > =C2=A0 const struct rga_frame *frm; > @@ -358,11 +371,7 @@ static int vidioc_try_fmt(struct file *file, void *p= riv, struct v4l2_format *f) > =C2=A0 if (!fmt) > =C2=A0 fmt =3D &hw->formats[0]; > =C2=A0 > - pix_fmt->width =3D clamp(pix_fmt->width, > - =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 hw->min_width, hw->max_width); > - pix_fmt->height =3D clamp(pix_fmt->height, > - hw->min_height, hw->max_height); > - > + v4l2_apply_frmsize_constraints(&pix_fmt->width, &pix_fmt->height, &frms= ize); > =C2=A0 v4l2_fill_pixfmt_mp(pix_fmt, fmt->fourcc, pix_fmt->width, pix_fmt-= >height); > =C2=A0 pix_fmt->field =3D V4L2_FIELD_NONE; > =C2=A0 --=-aiCC/tPL3UyCTVFf/HVn Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQTvDVKBFcTDwhoEbxLZQZRRKWBy9AUCab2ITQAKCRDZQZRRKWBy 9FnHAP9MXGaIWpolRasMrqQ7Y5bXCM/vLXshxf2/etb9oydBUwD+KLxgWdY37E/D WBZ3ODJn/aS23VsB+5pnmZYe6avkqgI= =XjGb -----END PGP SIGNATURE----- --=-aiCC/tPL3UyCTVFf/HVn--