public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Alexander Stein <alexander.stein@ew.tq-group.com>
Cc: hverkuil-cisco@xs4all.nl, Fabio Estevam <festevam@gmail.com>,
	sakari.ailus@linux.intel.com, rmfrfs@gmail.com,
	tharvey@gateworks.com, linux-media@vger.kernel.org,
	Fabio Estevam <festevam@denx.de>
Subject: Re: [PATCH v2] media: imx: imx7-media-csi: Fix applying format constraints
Date: Tue, 25 Jul 2023 22:39:42 +0300	[thread overview]
Message-ID: <20230725193942.GA433@pendragon.ideasonboard.com> (raw)
In-Reply-To: <4522817.cEBGB3zze1@steina-w>

On Fri, Jul 21, 2023 at 07:48:52AM +0200, Alexander Stein wrote:
> Am Freitag, 21. Juli 2023, 00:25:43 CEST schrieb Fabio Estevam:
> > From: Fabio Estevam <festevam@denx.de>
> > 
> > v4l_bound_align_image() aligns to a multiple power of 2 of walign, but the
> > result only needs to be a multiple of walign.
> > 
> > This causes a 640x480 sensor that used to report:
> > 
> > 	Width/Height      : 640/480
> > 
> > to incorrectly report:
> > 
> > 	Width/Height      : 768/480
> > 
> > Fix this problem by doing the correct alignment via clamp_roundup().
> > 
> > Reported-by: Tim Harvey <tharvey@gateworks.com>
> > Fixes: 6f482c4729d9 ("media: imx: imx7-media-csi: Get rid of superfluous
> > call to imx7_csi_mbus_fmt_to_pix_fmt") Co-developed-by: Alexander Stein
> > <alexander.stein@ew.tq-group.com> Signed-off-by: Alexander Stein
> > <alexander.stein@ew.tq-group.com>
> > Signed-off-by: Fabio Estevam <festevam@denx.de>
> > ---
> > Changes since v1:
> > - Export clamp_roundup().
> > 
> >  drivers/media/platform/nxp/imx7-media-csi.c | 4 ++--
> >  drivers/media/v4l2-core/v4l2-common.c       | 5 +++--
> >  include/media/v4l2-common.h                 | 2 ++
> >  3 files changed, 7 insertions(+), 4 deletions(-)
> > 
> > diff --git a/drivers/media/platform/nxp/imx7-media-csi.c
> > b/drivers/media/platform/nxp/imx7-media-csi.c index
> > 0bd2613b9320..f3c506fc19c4 100644
> > --- a/drivers/media/platform/nxp/imx7-media-csi.c
> > +++ b/drivers/media/platform/nxp/imx7-media-csi.c
> > @@ -1137,8 +1137,8 @@ __imx7_csi_video_try_fmt(struct v4l2_pix_format
> > *pixfmt, * TODO: Implement configurable stride support.
> >  	 */
> >  	walign = 8 * 8 / cc->bpp;
> > -	v4l_bound_align_image(&pixfmt->width, 1, 0xffff, walign,
> > -			      &pixfmt->height, 1, 0xffff, 1, 0);
> > +	pixfmt->width = clamp_roundup(pixfmt->width, 1, 0xffff, walign);
> > +	pixfmt->height = clamp_roundup(pixfmt->height, 1, 0xffff, 1);
> > 
> >  	pixfmt->bytesperline = pixfmt->width * cc->bpp / 8;
> >  	pixfmt->sizeimage = pixfmt->bytesperline * pixfmt->height;
> > diff --git a/drivers/media/v4l2-core/v4l2-common.c
> > b/drivers/media/v4l2-core/v4l2-common.c index bee1535b04d3..3e8c16bcb0f6
> > 100644
> > --- a/drivers/media/v4l2-core/v4l2-common.c
> > +++ b/drivers/media/v4l2-core/v4l2-common.c
> > @@ -106,8 +106,8 @@ static unsigned int clamp_align(unsigned int x, unsigned
> > int min, return x;
> >  }
> > 
> > -static unsigned int clamp_roundup(unsigned int x, unsigned int min,
> > -				   unsigned int max, unsigned int 
> alignment)
> > +unsigned int clamp_roundup(unsigned int x, unsigned int min,
> > +			   unsigned int max, unsigned int alignment)
> >  {
> >  	x = clamp(x, min, max);
> >  	if (alignment)
> > @@ -115,6 +115,7 @@ static unsigned int clamp_roundup(unsigned int x,
> > unsigned int min,
> > 
> >  	return x;
> >  }
> > +EXPORT_SYMBOL(clamp_roundup);
> > 
> >  void v4l_bound_align_image(u32 *w, unsigned int wmin, unsigned int wmax,
> >  			   unsigned int walign,
> > diff --git a/include/media/v4l2-common.h b/include/media/v4l2-common.h
> > index d278836fd9cb..7059b99f4afa 100644
> > --- a/include/media/v4l2-common.h
> > +++ b/include/media/v4l2-common.h
> > @@ -521,6 +521,8 @@ int v4l2_fill_pixfmt(struct v4l2_pix_format *pixfmt, u32
> > pixelformat, u32 width, u32 height);
> >  int v4l2_fill_pixfmt_mp(struct v4l2_pix_format_mplane *pixfmt, u32
> > pixelformat, u32 width, u32 height);
> > +unsigned int clamp_roundup(unsigned int x, unsigned int min,
> > +			   unsigned int max, unsigned int alignment);
> > 
> >  /**
> >   * v4l2_get_link_freq - Get link rate from transmitter
> 
> I expect this to work, but I'm not so sure about exporting clamp_roundup().

I agree. The function name is too generic to be exported by V4L2. It
should be moved to include/linux/minmax.h (and the implementation to a
corresponding source file if it's too large to be inlined) if we want to
export it.

> I would rather use v4l2_apply_frmsize_constraints() instead, but this requires 
> additional work, refer to the TODO in imx7_csi_video_enum_framesizes().

That TODO is definitely outdated, it would be nice to address it. I'll
submit a patch.

> See also my first (broken) try in [1].
> 
> As a short term fix, using clamp_roundup() is okay to me. But I'm thinking 
> about using a copy of clamp_roundup() as in v1 instead,so to avoid an eventual 
> unexport of clamp_roundup in the future. Maybe this concern doesn't matter, I 
> guess the maintainers can tell.
> 
> Best regards,
> Alexander
> 
> [1] https://lore.kernel.org/linux-media/202307210050.s7hfCvwG-lkp@intel.com/T/
> #ma88811098cb96f3698a8248d903f0c3455febec7

-- 
Regards,

Laurent Pinchart

  reply	other threads:[~2023-07-25 19:39 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-20 22:25 [PATCH v2] media: imx: imx7-media-csi: Fix applying format constraints Fabio Estevam
2023-07-20 22:59 ` Tim Harvey
2023-07-21  5:48 ` Alexander Stein
2023-07-25 19:39   ` Laurent Pinchart [this message]
2023-07-25 20:06 ` Laurent Pinchart
2023-07-25 22:51   ` Fabio Estevam
2023-07-25 22:52     ` Fabio Estevam

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230725193942.GA433@pendragon.ideasonboard.com \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=alexander.stein@ew.tq-group.com \
    --cc=festevam@denx.de \
    --cc=festevam@gmail.com \
    --cc=hverkuil-cisco@xs4all.nl \
    --cc=linux-media@vger.kernel.org \
    --cc=rmfrfs@gmail.com \
    --cc=sakari.ailus@linux.intel.com \
    --cc=tharvey@gateworks.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox