Message ID | 20221016163928.1ef0a4fe.dorota.czaplejewicz@puri.sm |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4ac7:0:0:0:0:0 with SMTP id y7csp1045995wrs; Sun, 16 Oct 2022 07:47:20 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6lCmIJbcx1m62u0CJUK+0O5+hfEFSKv8AyIMfixqrjSUsqA2B1yKptqKcF0l/S4D7pxir6 X-Received: by 2002:a17:907:2c68:b0:78d:eac6:2d0d with SMTP id ib8-20020a1709072c6800b0078deac62d0dmr5505582ejc.55.1665931640137; Sun, 16 Oct 2022 07:47:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1665931640; cv=none; d=google.com; s=arc-20160816; b=NGFKd4Bq1ZttIQvgujwHX35tO0V1AyLvizHH4Icyx9ihHH/iVtYHZNqwrgZDPHS5Ho 9HWrKm3khNTmDibRwzNRWkyU/mRONIPYaUfs6PnCtlXa2e3cgB5LaXr8B8qO/i4D+o4o ZcSxOFBKTngbLOC85pVztT3INtHvtusoktHDwzWO9/bqeyxhMbfMg176eh+zuMT0WRtX j7440rVlgyaBRspzvZLEeRlhsZAmjZlYbMUtjB6dvvD3KizqDYT+6GywSToJqP6d0ND5 XjHdUY2vUnzlNi2qFOhn1Xx76H+8UNFmkN5INw4PnjEWrsLa6CW+UJD9mSAGZqN2YnPy N/yA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:organization:message-id:subject:to :from:dkim-signature:date; bh=5qu8PKolLWSSVVEHOkXsjju3EU9jBWWDKI9oEKCXiOg=; b=d5k2W0TyG74hFPjNvaHa9OWimsAKDWlSK4uzAiWnc01cIz4UUD5OHCruxXZtWZqccL dMzfauUrhsG1H9iMTGeIFCXkslKc9eZtHEmTbiQNoXPIZz2kqO9zLb2fp9w5ziEvi+Bk wmy6+YNGV5SmpWxFshZiACNgCN4VmRfrzlQFJ5aNHe5oqQgLxO/9rk5ijP48t1Ha9N1g apKGK1waDvXAAnQ56yFGuU5oEwJMKWG8MPmgz0zbeOCGyvCNQd+hOKo3Cq623mzboN7M 2yUq9P1ymojovlRxHDItFgFnpuDKVnUQmtw3kVSfa1YYidIxgIJn3lrO1zwUmYLqXHUC JuBQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@puri.sm header.s=comms header.b=MlCG9O2o; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=puri.sm Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id sb14-20020a1709076d8e00b0078d09134618si7413403ejc.442.2022.10.16.07.46.51; Sun, 16 Oct 2022 07:47:20 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@puri.sm header.s=comms header.b=MlCG9O2o; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=puri.sm Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229681AbiJPOlA (ORCPT <rfc822;ouuuleilei@gmail.com> + 99 others); Sun, 16 Oct 2022 10:41:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45674 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229744AbiJPOk6 (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Sun, 16 Oct 2022 10:40:58 -0400 Received: from comms.puri.sm (comms.puri.sm [159.203.221.185]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2B3AE3B9AF; Sun, 16 Oct 2022 07:40:58 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by comms.puri.sm (Postfix) with ESMTP id AE8D7DF919; Sun, 16 Oct 2022 07:40:27 -0700 (PDT) Received: from comms.puri.sm ([127.0.0.1]) by localhost (comms.puri.sm [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Zy-5r13ibeDh; Sun, 16 Oct 2022 07:40:26 -0700 (PDT) Date: Sun, 16 Oct 2022 16:39:28 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=puri.sm; s=comms; t=1665931226; bh=W0L64e3HzKHkWHGerf0WHl/H2DONAMdk6gTSQ4fNdTQ=; h=Date:From:To:Subject:From; b=MlCG9O2oVZUmje8MmQvatYPJUdnaXr005yNJZIFe70CU1pElMsar9IHaIt+kmD2lw 7IXa+LsfgOdhuHMWny2WNuY2K5w/LtsH2Z+qZL0TQSCb5/N9sC6mf80M7w1PpFegRj vZcjWqykUs8dpv7s3wuVXTGxTZgxBK3kUS2S+i1qg8Ev8qqbh/cjVTMcS+u48SJkHK BC0RxNUxid/QIWxyXHqacrQsrf6v0rBBXDgtkB8LWY1fh9zHTO8i2tsEmbmc44fWfH tRUn96ccfNtpmqDlTmKtJI3BeVESX+G1AIz2X1fbfNW464Ro4ZH7lS29HdxSSxCReJ Y5ygQj6ugN32w== From: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm> To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>, Steve Longerbeam <slongerbeam@gmail.com>, Philipp Zabel <p.zabel@pengutronix.de>, Mauro Carvalho Chehab <mchehab@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Shawn Guo <shawnguo@kernel.org>, Sascha Hauer <s.hauer@pengutronix.de>, Pengutronix Kernel Team <kernel@pengutronix.de>, Fabio Estevam <festevam@gmail.com>, NXP Linux Team <linux-imx@nxp.com>, linux-media@vger.kernel.org, linux-staging@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kernel@puri.sm, phone-devel@vger.kernel.org Subject: [PATCHv3 1/1 RESEND] media: imx: Round line size to 4 bytes Message-ID: <20221016163928.1ef0a4fe.dorota.czaplejewicz@puri.sm> Organization: Purism MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/QpoY6r56b903uL_dAD/ortP"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1746855935398590715?= X-GMAIL-MSGID: =?utf-8?q?1746855935398590715?= |
Series |
[PATCHv3,1/1,RESEND] media: imx: Round line size to 4 bytes
|
|
Commit Message
Dorota Czaplejewicz
Oct. 16, 2022, 2:39 p.m. UTC
Section 13.7.6.13 "CSI Image Parameter Register" of the
i.MX 8M Quad Applications Processors Reference Manual
states that the line size should be divisible by 8 bytes.
However, the hardware also accepts sizes divisible by 4 bytes,
which are needed to fully utilize the S5K3L6XX sensors.
This patch accepts line sizes divisible by 4 bytes.
Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
---
Hello,
the Librem 5 is using an out-of-tree driver for s5k3l6xx, and rounding to 4 is optimal to operate it.
This revision improves the commit message.
Cheers,
Dorota Czaplejewicz
drivers/staging/media/imx/imx7-media-csi.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Comments
Hi Dorota, Thank you for the patch. On Sun, Oct 16, 2022 at 04:39:28PM +0200, Dorota Czaplejewicz wrote: > Section 13.7.6.13 "CSI Image Parameter Register" of the > i.MX 8M Quad Applications Processors Reference Manual > states that the line size should be divisible by 8 bytes. > However, the hardware also accepts sizes divisible by 4 bytes, > which are needed to fully utilize the S5K3L6XX sensors. > > This patch accepts line sizes divisible by 4 bytes. The patch itself looks fine, but I always worry when we depart from the documentation (sometimes that's a worry about documentation inaccuracies :-)). In this particular case, we need to test the change on i.MX7 too, as the alignment constraints could be platform-specific. I would also very much appreciate feedback from NXP on this. There's a risk of ill side-effects that I would prefer ruling out very clearly. > Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm> > --- > Hello, > > the Librem 5 is using an out-of-tree driver for s5k3l6xx, and rounding to 4 is optimal to operate it. > > This revision improves the commit message. > > Cheers, > Dorota Czaplejewicz > > drivers/staging/media/imx/imx7-media-csi.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/staging/media/imx/imx7-media-csi.c b/drivers/staging/media/imx/imx7-media-csi.c > index a0553c24cce4..af821b410c3f 100644 > --- a/drivers/staging/media/imx/imx7-media-csi.c > +++ b/drivers/staging/media/imx/imx7-media-csi.c > @@ -999,10 +999,10 @@ static int imx7_csi_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix, > } > > /* Round up width for minimum burst size */ > - width = round_up(mbus->width, 8); > + width = round_up(mbus->width, 4); > > /* Round up stride for IDMAC line start address alignment */ > - stride = round_up((width * cc->bpp) >> 3, 8); > + stride = round_up((width * cc->bpp) >> 3, 4); > > pix->width = width; > pix->height = mbus->height;
Hi, On Mon, 17 Oct 2022 11:28:57 +0300 Laurent Pinchart <laurent.pinchart@ideasonboard.com> wrote: > Hi Dorota, > > Thank you for the patch. > > On Sun, Oct 16, 2022 at 04:39:28PM +0200, Dorota Czaplejewicz wrote: > > Section 13.7.6.13 "CSI Image Parameter Register" of the > > i.MX 8M Quad Applications Processors Reference Manual > > states that the line size should be divisible by 8 bytes. > > However, the hardware also accepts sizes divisible by 4 bytes, > > which are needed to fully utilize the S5K3L6XX sensors. > > > > This patch accepts line sizes divisible by 4 bytes. > > The patch itself looks fine, but I always worry when we depart from the > documentation (sometimes that's a worry about documentation inaccuracies > :-)). In this particular case, we need to test the change on i.MX7 too, > as the alignment constraints could be platform-specific. > I don't have access to any i.MX7 hardware, unfortunately. I can help anyone who does and wants to test this. > I would also very much appreciate feedback from NXP on this. There's a > risk of ill side-effects that I would prefer ruling out very clearly. I posted a question on the NXP forum: https://community.nxp.com/t5/i-MX-Processors/i-MX8MQ-CSI-line-size-constraint-documentation-mistake/m-p/1538629#M196448 --Dorota > > > Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm> > > --- > > Hello, > > > > the Librem 5 is using an out-of-tree driver for s5k3l6xx, and rounding to 4 is optimal to operate it. > > > > This revision improves the commit message. > > > > Cheers, > > Dorota Czaplejewicz > > > > drivers/staging/media/imx/imx7-media-csi.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/staging/media/imx/imx7-media-csi.c b/drivers/staging/media/imx/imx7-media-csi.c > > index a0553c24cce4..af821b410c3f 100644 > > --- a/drivers/staging/media/imx/imx7-media-csi.c > > +++ b/drivers/staging/media/imx/imx7-media-csi.c > > @@ -999,10 +999,10 @@ static int imx7_csi_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix, > > } > > > > /* Round up width for minimum burst size */ > > - width = round_up(mbus->width, 8); > > + width = round_up(mbus->width, 4); > > > > /* Round up stride for IDMAC line start address alignment */ > > - stride = round_up((width * cc->bpp) >> 3, 8); > > + stride = round_up((width * cc->bpp) >> 3, 4); > > > > pix->width = width; > > pix->height = mbus->height; >
Hi all, On Mon, 17 Oct 2022 16:30:59 +0200 Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm> wrote: > Hi, > > On Mon, 17 Oct 2022 11:28:57 +0300 > Laurent Pinchart <laurent.pinchart@ideasonboard.com> wrote: > [snip] > > I would also very much appreciate feedback from NXP on this. There's a > > risk of ill side-effects that I would prefer ruling out very clearly. > > I posted a question on the NXP forum: https://community.nxp.com/t5/i-MX-Processors/i-MX8MQ-CSI-line-size-constraint-documentation-mistake/m-p/1538629#M196448 > This question received a reply from NXP today: https://community.nxp.com/t5/i-MX-Processors/i-MX8MQ-CSI-line-size-constraint-documentation-mistake/m-p/1546872/highlight/true#M197067 Quoting NXP's answer: > Do I understand correctly, that streams divisible by 4×4 will work on other i.MX8 hardware too? - Yes > Will those kind of resolutions work on i.MX7 series CSI hardware? - Yes which implies no bad side effects the way I read it. Is this sufficient for the kernel? Cheers, Dorota > > > > > Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm> > > > --- > > > Hello, > > > > > > the Librem 5 is using an out-of-tree driver for s5k3l6xx, and rounding to 4 is optimal to operate it. > > > > > > This revision improves the commit message. > > > > > > Cheers, > > > Dorota Czaplejewicz > > > > > > drivers/staging/media/imx/imx7-media-csi.c | 4 ++-- > > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > > > diff --git a/drivers/staging/media/imx/imx7-media-csi.c b/drivers/staging/media/imx/imx7-media-csi.c > > > index a0553c24cce4..af821b410c3f 100644 > > > --- a/drivers/staging/media/imx/imx7-media-csi.c > > > +++ b/drivers/staging/media/imx/imx7-media-csi.c > > > @@ -999,10 +999,10 @@ static int imx7_csi_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix, > > > } > > > > > > /* Round up width for minimum burst size */ > > > - width = round_up(mbus->width, 8); > > > + width = round_up(mbus->width, 4); > > > > > > /* Round up stride for IDMAC line start address alignment */ > > > - stride = round_up((width * cc->bpp) >> 3, 8); > > > + stride = round_up((width * cc->bpp) >> 3, 4); > > > > > > pix->width = width; > > > pix->height = mbus->height; > > >
Hi Dorota, On Tue, Nov 01, 2022 at 01:38:34PM +0100, Dorota Czaplejewicz wrote: > On Mon, 17 Oct 2022 16:30:59 +0200 Dorota Czaplejewicz wrote: > > On Mon, 17 Oct 2022 11:28:57 +0300 Laurent Pinchart wrote: > > [snip] > > > > I would also very much appreciate feedback from NXP on this. There's a > > > risk of ill side-effects that I would prefer ruling out very clearly. > > > > I posted a question on the NXP forum: https://community.nxp.com/t5/i-MX-Processors/i-MX8MQ-CSI-line-size-constraint-documentation-mistake/m-p/1538629#M196448 > > > > This question received a reply from NXP today: https://community.nxp.com/t5/i-MX-Processors/i-MX8MQ-CSI-line-size-constraint-documentation-mistake/m-p/1546872/highlight/true#M197067 > > Quoting NXP's answer: > > > Do I understand correctly, that streams divisible by 4×4 will work on other i.MX8 hardware too? - Yes > > Will those kind of resolutions work on i.MX7 series CSI hardware? - Yes > > which implies no bad side effects the way I read it. Is this > sufficient for the kernel? Ideally I'd like to test that on i.MX7 but I don't think I'll have time to do so in the near future. I don't want to block the patch on this, so I'm fine merging it, but I'd like a comment in the code that explains why it's safe to depart from the documentation. Also, the discussion on the NXP forum said that a width that is a multiple of 4 bytes but not a multiple of 8 bytes works only if the height is also a multiple of 4. I don't see that constraint being enforced in the code, am I missing something ? You mentioned in the forum that you tried 1052x779 and that failed. How did it fail ? Have you also tried 1052x778 ? > > > > Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm> > > > > --- > > > > Hello, > > > > > > > > the Librem 5 is using an out-of-tree driver for s5k3l6xx, and > > > > rounding to 4 is optimal to operate it. > > > > > > > > This revision improves the commit message. > > > > > > > > Cheers, > > > > Dorota Czaplejewicz > > > > > > > > drivers/staging/media/imx/imx7-media-csi.c | 4 ++-- > > > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > > > > > diff --git a/drivers/staging/media/imx/imx7-media-csi.c b/drivers/staging/media/imx/imx7-media-csi.c > > > > index a0553c24cce4..af821b410c3f 100644 > > > > --- a/drivers/staging/media/imx/imx7-media-csi.c > > > > +++ b/drivers/staging/media/imx/imx7-media-csi.c > > > > @@ -999,10 +999,10 @@ static int imx7_csi_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix, > > > > } > > > > > > > > /* Round up width for minimum burst size */ > > > > - width = round_up(mbus->width, 8); > > > > + width = round_up(mbus->width, 4); > > > > > > > > /* Round up stride for IDMAC line start address alignment */ > > > > - stride = round_up((width * cc->bpp) >> 3, 8); > > > > + stride = round_up((width * cc->bpp) >> 3, 4); > > > > > > > > pix->width = width; > > > > pix->height = mbus->height;
Hello, On Thu, 24 Nov 2022 13:30:15 +0200 Laurent Pinchart <laurent.pinchart@ideasonboard.com> wrote: > Hi Dorota, > > On Tue, Nov 01, 2022 at 01:38:34PM +0100, Dorota Czaplejewicz wrote: > > On Mon, 17 Oct 2022 16:30:59 +0200 Dorota Czaplejewicz wrote: > > > On Mon, 17 Oct 2022 11:28:57 +0300 Laurent Pinchart wrote: > > > > [snip] > > > > > > I would also very much appreciate feedback from NXP on this. There's a > > > > risk of ill side-effects that I would prefer ruling out very clearly. > > > > > > I posted a question on the NXP forum: https://community.nxp.com/t5/i-MX-Processors/i-MX8MQ-CSI-line-size-constraint-documentation-mistake/m-p/1538629#M196448 > > > > > > > This question received a reply from NXP today: https://community.nxp.com/t5/i-MX-Processors/i-MX8MQ-CSI-line-size-constraint-documentation-mistake/m-p/1546872/highlight/true#M197067 > > > > Quoting NXP's answer: > > > > > Do I understand correctly, that streams divisible by 4×4 will work on other i.MX8 hardware too? - Yes > > > Will those kind of resolutions work on i.MX7 series CSI hardware? - Yes > > > > which implies no bad side effects the way I read it. Is this > > sufficient for the kernel? > > Ideally I'd like to test that on i.MX7 but I don't think I'll have time > to do so in the near future. I don't want to block the patch on this, so > I'm fine merging it, but I'd like a comment in the code that explains > why it's safe to depart from the documentation. > > Also, the discussion on the NXP forum said that a width that is a > multiple of 4 bytes but not a multiple of 8 bytes works only if the > height is also a multiple of 4. I don't see that constraint being > enforced in the code, am I missing something ? Thanks for pointing it out, I'll have to double-check it. > > You mentioned in the forum that you tried 1052x779 and that failed. How > did it fail ? Have you also tried 1052x778 ? I tried with many resolutions when I was checking out the sensor, and came to the conclusion that the line count must be even. Otherwise the last 4 bytes of the buffer would end up corrupted. My guess is that the copy engine can indeed only do bursts of 8 bytes, but that the whole buffer is copied at once rather than line-by-line. > > > > > > Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm> > > > > > --- > > > > > Hello, > > > > > > > > > > the Librem 5 is using an out-of-tree driver for s5k3l6xx, and > > > > > rounding to 4 is optimal to operate it. > > > > > > > > > > This revision improves the commit message. > > > > > > > > > > Cheers, > > > > > Dorota Czaplejewicz > > > > > > > > > > drivers/staging/media/imx/imx7-media-csi.c | 4 ++-- > > > > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > > > > > > > diff --git a/drivers/staging/media/imx/imx7-media-csi.c b/drivers/staging/media/imx/imx7-media-csi.c > > > > > index a0553c24cce4..af821b410c3f 100644 > > > > > --- a/drivers/staging/media/imx/imx7-media-csi.c > > > > > +++ b/drivers/staging/media/imx/imx7-media-csi.c > > > > > @@ -999,10 +999,10 @@ static int imx7_csi_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix, > > > > > } > > > > > > > > > > /* Round up width for minimum burst size */ > > > > > - width = round_up(mbus->width, 8); > > > > > + width = round_up(mbus->width, 4); > > > > > > > > > > /* Round up stride for IDMAC line start address alignment */ > > > > > - stride = round_up((width * cc->bpp) >> 3, 8); > > > > > + stride = round_up((width * cc->bpp) >> 3, 4); > > > > > > > > > > pix->width = width; > > > > > pix->height = mbus->height; >
diff --git a/drivers/staging/media/imx/imx7-media-csi.c b/drivers/staging/media/imx/imx7-media-csi.c index a0553c24cce4..af821b410c3f 100644 --- a/drivers/staging/media/imx/imx7-media-csi.c +++ b/drivers/staging/media/imx/imx7-media-csi.c @@ -999,10 +999,10 @@ static int imx7_csi_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix, } /* Round up width for minimum burst size */ - width = round_up(mbus->width, 8); + width = round_up(mbus->width, 4); /* Round up stride for IDMAC line start address alignment */ - stride = round_up((width * cc->bpp) >> 3, 8); + stride = round_up((width * cc->bpp) >> 3, 4); pix->width = width; pix->height = mbus->height;