From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Alexander Stein <alexander.stein@ew.tq-group.com>
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>,
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: [PATCH 3/8] media: imx: Use dedicated format handler for i.MX7/8
Date: Sat, 5 Feb 2022 06:04:50 +0200 [thread overview]
Message-ID: <Yf33YviITGDnolHw@pendragon.ideasonboard.com> (raw)
In-Reply-To: <20220204121514.2762676-4-alexander.stein@ew.tq-group.com>
Hi Alexander and Dorota,
Thank you for the patch.
On Fri, Feb 04, 2022 at 01:15:09PM +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 comparison to original commit from Dorota:
> * is_imx56 is used instead of enum
>
> drivers/staging/media/imx/imx-media-utils.c | 56 +++++++++++++++++++--
> 1 file changed, 52 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/staging/media/imx/imx-media-utils.c b/drivers/staging/media/imx/imx-media-utils.c
> index 0daa6aad45f4..32aaa2e81bea 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,
> - bool is_imx56)
> +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,55 @@ 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)
> +{
> + 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.
> + */
> + ret = v4l2_fill_pixfmt(pix, cc->fourcc,
> + round_up(mbus->width, 4), mbus->height);
> + if (ret)
> + return ret;
> +
> + /* 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 (pix->sizeimage % 8 != 0)
> + ret = v4l2_fill_pixfmt(pix, cc->fourcc,
> + round_up(mbus->width, 8), mbus->height);
I think you could simplify this by using cc->bpp to figure out the
alignment instead of calling v4l2_fill_pixfmt() twice.
> +
> + pix->colorspace = mbus->colorspace;
> + pix->xfer_func = mbus->xfer_func;
> + pix->ycbcr_enc = mbus->ycbcr_enc;
> + pix->quantization = mbus->quantization;
> + pix->field = mbus->field;
Should v4l2_fill_pixfmt() be updated to handle colorspace and field too
instead of doing it manually here ?
> +
> + 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,
> + bool is_imx56)
> +{
> + if (is_imx56)
> + return imx56_media_mbus_fmt_to_pix_fmt(pix, mbus, cc);
> + else
> + return imx78_media_mbus_fmt_to_pix_fmt(pix, mbus, cc);
> +}
> EXPORT_SYMBOL_GPL(imx_media_mbus_fmt_to_pix_fmt);
>
> void imx_media_free_dma_buf(struct device *dev,
--
Regards,
Laurent Pinchart
WARNING: multiple messages have this Message-ID (diff)
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Alexander Stein <alexander.stein@ew.tq-group.com>
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>,
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: [PATCH 3/8] media: imx: Use dedicated format handler for i.MX7/8
Date: Sat, 5 Feb 2022 06:04:50 +0200 [thread overview]
Message-ID: <Yf33YviITGDnolHw@pendragon.ideasonboard.com> (raw)
In-Reply-To: <20220204121514.2762676-4-alexander.stein@ew.tq-group.com>
Hi Alexander and Dorota,
Thank you for the patch.
On Fri, Feb 04, 2022 at 01:15:09PM +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 comparison to original commit from Dorota:
> * is_imx56 is used instead of enum
>
> drivers/staging/media/imx/imx-media-utils.c | 56 +++++++++++++++++++--
> 1 file changed, 52 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/staging/media/imx/imx-media-utils.c b/drivers/staging/media/imx/imx-media-utils.c
> index 0daa6aad45f4..32aaa2e81bea 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,
> - bool is_imx56)
> +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,55 @@ 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)
> +{
> + 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.
> + */
> + ret = v4l2_fill_pixfmt(pix, cc->fourcc,
> + round_up(mbus->width, 4), mbus->height);
> + if (ret)
> + return ret;
> +
> + /* 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 (pix->sizeimage % 8 != 0)
> + ret = v4l2_fill_pixfmt(pix, cc->fourcc,
> + round_up(mbus->width, 8), mbus->height);
I think you could simplify this by using cc->bpp to figure out the
alignment instead of calling v4l2_fill_pixfmt() twice.
> +
> + pix->colorspace = mbus->colorspace;
> + pix->xfer_func = mbus->xfer_func;
> + pix->ycbcr_enc = mbus->ycbcr_enc;
> + pix->quantization = mbus->quantization;
> + pix->field = mbus->field;
Should v4l2_fill_pixfmt() be updated to handle colorspace and field too
instead of doing it manually here ?
> +
> + 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,
> + bool is_imx56)
> +{
> + if (is_imx56)
> + return imx56_media_mbus_fmt_to_pix_fmt(pix, mbus, cc);
> + else
> + return imx78_media_mbus_fmt_to_pix_fmt(pix, mbus, cc);
> +}
> EXPORT_SYMBOL_GPL(imx_media_mbus_fmt_to_pix_fmt);
>
> void imx_media_free_dma_buf(struct device *dev,
--
Regards,
Laurent Pinchart
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2022-02-05 4:05 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-04 12:15 [PATCH 0/8] imx7/imx8mm media / csi patches Alexander Stein
2022-02-04 12:15 ` Alexander Stein
2022-02-04 12:15 ` [PATCH 1/8] media: imx: Store the type of hardware implementation Alexander Stein
2022-02-04 12:15 ` Alexander Stein
2022-02-05 3:21 ` Laurent Pinchart
2022-02-05 3:21 ` Laurent Pinchart
2022-02-07 9:22 ` (EXT) " Alexander Stein
2022-02-07 9:22 ` Alexander Stein
2022-02-08 1:26 ` Laurent Pinchart
2022-02-08 1:26 ` Laurent Pinchart
2022-02-04 12:15 ` [PATCH 2/8] media: imx: Forward " Alexander Stein
2022-02-04 12:15 ` Alexander Stein
2022-02-05 3:41 ` Laurent Pinchart
2022-02-05 3:41 ` Laurent Pinchart
2022-02-04 12:15 ` [PATCH 3/8] media: imx: Use dedicated format handler for i.MX7/8 Alexander Stein
2022-02-04 12:15 ` Alexander Stein
2022-02-05 4:04 ` Laurent Pinchart [this message]
2022-02-05 4:04 ` Laurent Pinchart
2022-02-07 12:08 ` (EXT) " Alexander Stein
2022-02-07 12:08 ` Alexander Stein
2022-02-04 12:15 ` [PATCH 4/8] media: imx: Fail conversion if pixel format not supported Alexander Stein
2022-02-04 12:15 ` Alexander Stein
2022-02-05 4:07 ` Laurent Pinchart
2022-02-05 4:07 ` Laurent Pinchart
2022-02-05 7:51 ` Dorota Czaplejewicz
2022-02-05 7:51 ` Dorota Czaplejewicz
2022-02-07 9:52 ` (EXT) " Alexander Stein
2022-02-07 9:52 ` Alexander Stein
2022-02-08 1:14 ` Laurent Pinchart
2022-02-08 1:14 ` Laurent Pinchart
2022-02-04 12:15 ` [PATCH 5/8] media: imx: imx7_mipi_csis: store colorspace in set_fmt as well Alexander Stein
2022-02-04 12:15 ` Alexander Stein
2022-02-05 3:26 ` Laurent Pinchart
2022-02-05 3:26 ` Laurent Pinchart
2022-02-07 9:55 ` (EXT) " Alexander Stein
2022-02-07 9:55 ` Alexander Stein
2022-02-04 12:15 ` [PATCH 6/8] media: imx: imx7_media-csi: Add support for additional Bayer patterns Alexander Stein
2022-02-04 12:15 ` Alexander Stein
2022-02-05 3:40 ` Laurent Pinchart
2022-02-05 3:40 ` Laurent Pinchart
2022-02-07 10:01 ` (EXT) " Alexander Stein
2022-02-07 10:01 ` Alexander Stein
2022-02-04 12:15 ` [PATCH 7/8] media: imx: utils: Add more Bayer formats Alexander Stein
2022-02-04 12:15 ` Alexander Stein
2022-02-05 3:31 ` Laurent Pinchart
2022-02-05 3:31 ` Laurent Pinchart
2022-02-07 10:35 ` (EXT) " Alexander Stein
2022-02-07 10:35 ` Alexander Stein
2022-02-04 12:15 ` [PATCH 8/8] [DNI] arm64: dts: tqma8mqml: add IMX327 MIPI-CSI overlay Alexander Stein
2022-02-04 12:15 ` Alexander Stein
2022-02-05 3:16 ` [PATCH 0/8] imx7/imx8mm media / csi patches Laurent Pinchart
2022-02-05 3:16 ` Laurent Pinchart
2022-02-07 8:59 ` (EXT) " Alexander Stein
2022-02-07 8:59 ` Alexander Stein
2022-02-08 1:20 ` Laurent Pinchart
2022-02-08 1:20 ` Laurent Pinchart
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=Yf33YviITGDnolHw@pendragon.ideasonboard.com \
--to=laurent.pinchart@ideasonboard.com \
--cc=alexander.stein@ew.tq-group.com \
--cc=dorota.czaplejewicz@puri.sm \
--cc=festevam@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=kernel@pengutronix.de \
--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.