All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Stein <alexander.stein@ew.tq-group.com>
To: Jacopo Mondi <jacopo@jmondi.org>
Cc: 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>,
	Rui Miguel Silva <rmfrfs@gmail.com>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>,
	linux-media@vger.kernel.org, linux-staging@lists.linux.dev,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: (EXT) Re: [PATCH v2 3/9] media: imx: Use dedicated format handler for i.MX7/8
Date: Tue, 15 Feb 2022 08:29:34 +0100	[thread overview]
Message-ID: <2319937.ElGaqSPkdT@steina-w> (raw)
In-Reply-To: <20220214185115.y3rdxyvi7dmupeye@uno.localdomain>

Hi Jacopo,

Am Montag, 14. Februar 2022, 19:51:15 CET schrieb Jacopo Mondi:
> Hello
> 
> On Fri, Feb 11, 2022 at 03:27:46PM +0100, Alexander Stein wrote:
> > From: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
> > 
> > This splits out a format handler which takes into account
> > the capabilities of the i.MX7/8 video device,
> > as opposed to the default handler compatible with both i.MX5/6 and
> > i.MX7/8.
> > 
> > Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
> > Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
> > ---
> > Changes in v2:
> > * Switch back to using enum
> > * Get rid of an additional call to v4l2_fill_pixfmt()
> > 
> >  drivers/staging/media/imx/imx-media-utils.c | 60 +++++++++++++++++++--
> >  1 file changed, 56 insertions(+), 4 deletions(-)
> > 
> > diff --git a/drivers/staging/media/imx/imx-media-utils.c
> > b/drivers/staging/media/imx/imx-media-utils.c index
> > c42f3da8e3a8..02a4cb124d37 100644
> > --- a/drivers/staging/media/imx/imx-media-utils.c
> > +++ b/drivers/staging/media/imx/imx-media-utils.c
> > @@ -516,10 +516,9 @@ void imx_media_try_colorimetry(struct
> > v4l2_mbus_framefmt *tryfmt,> 
> >  }
> >  EXPORT_SYMBOL_GPL(imx_media_try_colorimetry);
> > 
> > -int imx_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
> > -				  const struct v4l2_mbus_framefmt 
*mbus,
> > -				  const struct imx_media_pixfmt 
*cc,
> > -				  enum imx_media_device_type type)
> > +static int imx56_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
> > +					   const struct 
v4l2_mbus_framefmt *mbus,
> > +					   const struct 
imx_media_pixfmt *cc)
> > 
> >  {
> >  
> >  	u32 width;
> >  	u32 stride;
> > 
> > @@ -568,6 +567,59 @@ int imx_media_mbus_fmt_to_pix_fmt(struct
> > v4l2_pix_format *pix,> 
> >  	return 0;
> >  
> >  }
> > 
> > +
> > +static int imx78_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
> > +					   const struct 
v4l2_mbus_framefmt *mbus,
> > +					   const struct 
imx_media_pixfmt *cc)
> > +{
> > +	u32 aligned_width;
> > +	int ret;
> > +
> > +	if (!cc)
> > +		cc = imx_media_find_mbus_format(mbus->code, 
PIXFMT_SEL_ANY);
> > +
> > +	if (!cc)
> > +		return -EINVAL;
> > +	/*
> > +	 * The hardware can handle line lengths divisible by 4 pixels
> > +	 * as long as the whole buffer size ends up divisible by 8 bytes.
> > +	 * If not, use the value of 8 pixels recommended in the datasheet.
> > +	 * Only 8bits-per-pixel formats may need to get aligned to 8 
pixels,
> > +	 * because both 10-bit and 16-bit pixels occupy 2 bytes.
> > +	 * In those, 4-pixel aligmnent is equal to 8-byte alignment.
> > +	 */
> > +	if (cc->bpp == 1)
> 
> Am I mistaken or in the format enumeration bpp is expressed in bits
> and not bytes ?

No, you are completely right. Thanks for find noticing that.

Regards,
Alexander

> > +		aligned_width = round_up(mbus->width, 8);
> > +	else
> > +		aligned_width = round_up(mbus->width, 4);
> > +
> > +	ret = v4l2_fill_pixfmt(pix, cc->fourcc,
> > +			       aligned_width, mbus->height);
> > +	if (ret)
> > +		return ret;
> > +
> > +	pix->colorspace = mbus->colorspace;
> > +	pix->xfer_func = mbus->xfer_func;
> > +	pix->ycbcr_enc = mbus->ycbcr_enc;
> > +	pix->quantization = mbus->quantization;
> > +	pix->field = mbus->field;
> > +
> > +	return ret;
> > +}
> > +
> > +int imx_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
> > +				  const struct v4l2_mbus_framefmt 
*mbus,
> > +				  const struct imx_media_pixfmt 
*cc,
> > +				  enum imx_media_device_type type)
> > +{
> > +	switch (type) {
> > +	case DEVICE_TYPE_IMX56:
> > +		return imx56_media_mbus_fmt_to_pix_fmt(pix, mbus, cc);
> > +	case DEVICE_TYPE_IMX78:
> > +		return imx78_media_mbus_fmt_to_pix_fmt(pix, mbus, cc);
> > +	}
> > +	return -EINVAL;
> > +}
> > 
> >  EXPORT_SYMBOL_GPL(imx_media_mbus_fmt_to_pix_fmt);
> >  
> >  void imx_media_free_dma_buf(struct device *dev,
> > 
> > --
> > 2.25.1





WARNING: multiple messages have this Message-ID (diff)
From: Alexander Stein <alexander.stein@ew.tq-group.com>
To: Jacopo Mondi <jacopo@jmondi.org>
Cc: 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>,
	Rui Miguel Silva <rmfrfs@gmail.com>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>,
	linux-media@vger.kernel.org, linux-staging@lists.linux.dev,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: (EXT) Re: [PATCH v2 3/9] media: imx: Use dedicated format handler for i.MX7/8
Date: Tue, 15 Feb 2022 08:29:34 +0100	[thread overview]
Message-ID: <2319937.ElGaqSPkdT@steina-w> (raw)
In-Reply-To: <20220214185115.y3rdxyvi7dmupeye@uno.localdomain>

Hi Jacopo,

Am Montag, 14. Februar 2022, 19:51:15 CET schrieb Jacopo Mondi:
> Hello
> 
> On Fri, Feb 11, 2022 at 03:27:46PM +0100, Alexander Stein wrote:
> > From: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
> > 
> > This splits out a format handler which takes into account
> > the capabilities of the i.MX7/8 video device,
> > as opposed to the default handler compatible with both i.MX5/6 and
> > i.MX7/8.
> > 
> > Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
> > Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
> > ---
> > Changes in v2:
> > * Switch back to using enum
> > * Get rid of an additional call to v4l2_fill_pixfmt()
> > 
> >  drivers/staging/media/imx/imx-media-utils.c | 60 +++++++++++++++++++--
> >  1 file changed, 56 insertions(+), 4 deletions(-)
> > 
> > diff --git a/drivers/staging/media/imx/imx-media-utils.c
> > b/drivers/staging/media/imx/imx-media-utils.c index
> > c42f3da8e3a8..02a4cb124d37 100644
> > --- a/drivers/staging/media/imx/imx-media-utils.c
> > +++ b/drivers/staging/media/imx/imx-media-utils.c
> > @@ -516,10 +516,9 @@ void imx_media_try_colorimetry(struct
> > v4l2_mbus_framefmt *tryfmt,> 
> >  }
> >  EXPORT_SYMBOL_GPL(imx_media_try_colorimetry);
> > 
> > -int imx_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
> > -				  const struct v4l2_mbus_framefmt 
*mbus,
> > -				  const struct imx_media_pixfmt 
*cc,
> > -				  enum imx_media_device_type type)
> > +static int imx56_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
> > +					   const struct 
v4l2_mbus_framefmt *mbus,
> > +					   const struct 
imx_media_pixfmt *cc)
> > 
> >  {
> >  
> >  	u32 width;
> >  	u32 stride;
> > 
> > @@ -568,6 +567,59 @@ int imx_media_mbus_fmt_to_pix_fmt(struct
> > v4l2_pix_format *pix,> 
> >  	return 0;
> >  
> >  }
> > 
> > +
> > +static int imx78_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
> > +					   const struct 
v4l2_mbus_framefmt *mbus,
> > +					   const struct 
imx_media_pixfmt *cc)
> > +{
> > +	u32 aligned_width;
> > +	int ret;
> > +
> > +	if (!cc)
> > +		cc = imx_media_find_mbus_format(mbus->code, 
PIXFMT_SEL_ANY);
> > +
> > +	if (!cc)
> > +		return -EINVAL;
> > +	/*
> > +	 * The hardware can handle line lengths divisible by 4 pixels
> > +	 * as long as the whole buffer size ends up divisible by 8 bytes.
> > +	 * If not, use the value of 8 pixels recommended in the datasheet.
> > +	 * Only 8bits-per-pixel formats may need to get aligned to 8 
pixels,
> > +	 * because both 10-bit and 16-bit pixels occupy 2 bytes.
> > +	 * In those, 4-pixel aligmnent is equal to 8-byte alignment.
> > +	 */
> > +	if (cc->bpp == 1)
> 
> Am I mistaken or in the format enumeration bpp is expressed in bits
> and not bytes ?

No, you are completely right. Thanks for find noticing that.

Regards,
Alexander

> > +		aligned_width = round_up(mbus->width, 8);
> > +	else
> > +		aligned_width = round_up(mbus->width, 4);
> > +
> > +	ret = v4l2_fill_pixfmt(pix, cc->fourcc,
> > +			       aligned_width, mbus->height);
> > +	if (ret)
> > +		return ret;
> > +
> > +	pix->colorspace = mbus->colorspace;
> > +	pix->xfer_func = mbus->xfer_func;
> > +	pix->ycbcr_enc = mbus->ycbcr_enc;
> > +	pix->quantization = mbus->quantization;
> > +	pix->field = mbus->field;
> > +
> > +	return ret;
> > +}
> > +
> > +int imx_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
> > +				  const struct v4l2_mbus_framefmt 
*mbus,
> > +				  const struct imx_media_pixfmt 
*cc,
> > +				  enum imx_media_device_type type)
> > +{
> > +	switch (type) {
> > +	case DEVICE_TYPE_IMX56:
> > +		return imx56_media_mbus_fmt_to_pix_fmt(pix, mbus, cc);
> > +	case DEVICE_TYPE_IMX78:
> > +		return imx78_media_mbus_fmt_to_pix_fmt(pix, mbus, cc);
> > +	}
> > +	return -EINVAL;
> > +}
> > 
> >  EXPORT_SYMBOL_GPL(imx_media_mbus_fmt_to_pix_fmt);
> >  
> >  void imx_media_free_dma_buf(struct device *dev,
> > 
> > --
> > 2.25.1





_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2022-02-15  7:29 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-11 14:27 [PATCH v2 0/9] imx7/imx8mm media / csi patches Alexander Stein
2022-02-11 14:27 ` Alexander Stein
2022-02-11 14:27 ` [PATCH v2 1/9] media: imx: Store the type of hardware implementation Alexander Stein
2022-02-11 14:27   ` Alexander Stein
2022-02-14 18:50   ` Jacopo Mondi
2022-02-14 18:50     ` Jacopo Mondi
2022-02-14 19:01     ` Laurent Pinchart
2022-02-14 19:01       ` Laurent Pinchart
2022-02-15  7:53   ` Laurent Pinchart
2022-02-15  7:53     ` Laurent Pinchart
2022-02-11 14:27 ` [PATCH v2 2/9] media: imx: Forward " Alexander Stein
2022-02-11 14:27   ` Alexander Stein
2022-02-11 14:27 ` [PATCH v2 3/9] media: imx: Use dedicated format handler for i.MX7/8 Alexander Stein
2022-02-11 14:27   ` Alexander Stein
2022-02-14 18:51   ` Jacopo Mondi
2022-02-14 18:51     ` Jacopo Mondi
2022-02-15  7:29     ` Alexander Stein [this message]
2022-02-15  7:29       ` (EXT) " Alexander Stein
2022-02-11 14:27 ` [PATCH v2 4/9] media: imx: Fail conversion if pixel format not supported Alexander Stein
2022-02-11 14:27   ` Alexander Stein
2022-02-15  7:55   ` Laurent Pinchart
2022-02-15  7:55     ` Laurent Pinchart
2022-02-11 14:27 ` [PATCH v2 5/9] media: imx: imx7_mipi_csis: store colorspace in set_fmt as well Alexander Stein
2022-02-11 14:27   ` Alexander Stein
2022-02-15  7:57   ` Laurent Pinchart
2022-02-15  7:57     ` Laurent Pinchart
2022-02-11 14:27 ` [PATCH v2 6/9] media: imx: imx7_media-csi: Add support for additional Bayer patterns Alexander Stein
2022-02-11 14:27   ` Alexander Stein
2022-02-11 14:27 ` [PATCH v2 7/9] media: imx: utils: Add more Bayer formats Alexander Stein
2022-02-11 14:27   ` Alexander Stein
2022-02-11 14:27 ` [PATCH v2 8/9] media: imx: utils: initialize local variable Alexander Stein
2022-02-11 14:27   ` Alexander Stein
2022-02-11 14:27 ` [PATCH v2 9/9] [DNI] arm64: dts: tqma8mqml: add IMX327 MIPI-CSI overlay Alexander Stein
2022-02-11 14:27   ` Alexander Stein

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=2319937.ElGaqSPkdT@steina-w \
    --to=alexander.stein@ew.tq-group.com \
    --cc=dorota.czaplejewicz@puri.sm \
    --cc=festevam@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jacopo@jmondi.org \
    --cc=kernel@pengutronix.de \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-imx@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-staging@lists.linux.dev \
    --cc=mchehab@kernel.org \
    --cc=p.zabel@pengutronix.de \
    --cc=rmfrfs@gmail.com \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    --cc=slongerbeam@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.