* [PATCHv2 1/4] media: imx: Remove unused functions
@ 2021-10-17 11:08 ` Dorota Czaplejewicz
0 siblings, 0 replies; 20+ messages in thread
From: Dorota Czaplejewicz @ 2021-10-17 11:08 UTC (permalink / raw)
To: Steve Longerbeam, Philipp Zabel, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
[-- Attachment #1.1: Type: text/plain, Size: 3482 bytes --]
Neither imx_media_mbus_fmt_to_ipu_image nor imx_media_ipu_image_to_mbus_fmt
were used anywhere.
Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
---
Hello,
This patch series attempts to separate image format handling between devices in the i.MX5/6 and i.MX7/8 families.
The first patch in the series implements the suggestion I received from Philipp Zabel as feedback to the previous series.
The last 3 could in principle be submitted as a single patch, but I opted for minimal changes, for reviewing clarity.
The last patch is the core of the change, where i.MX5/6 uses the old code path, and i.MX7/8 uses a slightly redacted copy of it. I have fairly limited experience with the parameters that go into determining the format, so I opted only to adjust the part I have tested: the rounding.
Regards,
Dorota
drivers/staging/media/imx/imx-media-utils.c | 42 ---------------------
drivers/staging/media/imx/imx-media.h | 4 --
2 files changed, 46 deletions(-)
diff --git a/drivers/staging/media/imx/imx-media-utils.c b/drivers/staging/media/imx/imx-media-utils.c
index 5128915a5d6f..afa96e05ea7f 100644
--- a/drivers/staging/media/imx/imx-media-utils.c
+++ b/drivers/staging/media/imx/imx-media-utils.c
@@ -569,48 +569,6 @@ int imx_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
}
EXPORT_SYMBOL_GPL(imx_media_mbus_fmt_to_pix_fmt);
-int imx_media_mbus_fmt_to_ipu_image(struct ipu_image *image,
- const struct v4l2_mbus_framefmt *mbus)
-{
- int ret;
-
- memset(image, 0, sizeof(*image));
-
- ret = imx_media_mbus_fmt_to_pix_fmt(&image->pix, mbus, NULL);
- if (ret)
- return ret;
-
- image->rect.width = mbus->width;
- image->rect.height = mbus->height;
-
- return 0;
-}
-EXPORT_SYMBOL_GPL(imx_media_mbus_fmt_to_ipu_image);
-
-int imx_media_ipu_image_to_mbus_fmt(struct v4l2_mbus_framefmt *mbus,
- const struct ipu_image *image)
-{
- const struct imx_media_pixfmt *fmt;
-
- fmt = imx_media_find_pixel_format(image->pix.pixelformat,
- PIXFMT_SEL_ANY);
- if (!fmt || !fmt->codes || !fmt->codes[0])
- return -EINVAL;
-
- memset(mbus, 0, sizeof(*mbus));
- mbus->width = image->pix.width;
- mbus->height = image->pix.height;
- mbus->code = fmt->codes[0];
- mbus->field = image->pix.field;
- mbus->colorspace = image->pix.colorspace;
- mbus->xfer_func = image->pix.xfer_func;
- mbus->ycbcr_enc = image->pix.ycbcr_enc;
- mbus->quantization = image->pix.quantization;
-
- return 0;
-}
-EXPORT_SYMBOL_GPL(imx_media_ipu_image_to_mbus_fmt);
-
void imx_media_free_dma_buf(struct device *dev,
struct imx_media_dma_buf *buf)
{
diff --git a/drivers/staging/media/imx/imx-media.h b/drivers/staging/media/imx/imx-media.h
index 492d9a64e704..d2a150aac6cd 100644
--- a/drivers/staging/media/imx/imx-media.h
+++ b/drivers/staging/media/imx/imx-media.h
@@ -199,10 +199,6 @@ void imx_media_try_colorimetry(struct v4l2_mbus_framefmt *tryfmt,
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);
-int imx_media_mbus_fmt_to_ipu_image(struct ipu_image *image,
- const struct v4l2_mbus_framefmt *mbus);
-int imx_media_ipu_image_to_mbus_fmt(struct v4l2_mbus_framefmt *mbus,
- const struct ipu_image *image);
void imx_media_grp_id_to_sd_name(char *sd_name, int sz,
u32 grp_id, int ipu_id);
struct v4l2_subdev *
--
2.31.1
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
[-- Attachment #2: Type: text/plain, Size: 176 bytes --]
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCHv2 2/4] media: imx: Store the type of hardware implementation
2021-10-17 11:08 ` Dorota Czaplejewicz
@ 2021-10-17 11:08 ` Dorota Czaplejewicz
-1 siblings, 0 replies; 20+ messages in thread
From: Dorota Czaplejewicz @ 2021-10-17 11:08 UTC (permalink / raw)
To: Steve Longerbeam, Philipp Zabel, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
[-- Attachment #1: Type: text/plain, Size: 4600 bytes --]
The driver covers i.MX5/6, as well as i.MX7/8 hardware.
Those implementations differ, e.g. in the sizes of buffers they accept.
Some functionality should be abstracted, and storing type achieves that.
Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
---
drivers/staging/media/imx/imx-ic-prpencvf.c | 3 ++-
drivers/staging/media/imx/imx-media-capture.c | 5 ++++-
drivers/staging/media/imx/imx-media-csi.c | 3 ++-
drivers/staging/media/imx/imx-media.h | 8 +++++++-
drivers/staging/media/imx/imx7-media-csi.c | 3 ++-
5 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/drivers/staging/media/imx/imx-ic-prpencvf.c b/drivers/staging/media/imx/imx-ic-prpencvf.c
index d990553de87b..e06f5fbe5174 100644
--- a/drivers/staging/media/imx/imx-ic-prpencvf.c
+++ b/drivers/staging/media/imx/imx-ic-prpencvf.c
@@ -1265,7 +1265,8 @@ static int prp_registered(struct v4l2_subdev *sd)
priv->vdev = imx_media_capture_device_init(ic_priv->ipu_dev,
&ic_priv->sd,
- PRPENCVF_SRC_PAD, true);
+ PRPENCVF_SRC_PAD, true,
+ DEVICE_TYPE_IMX56);
if (IS_ERR(priv->vdev))
return PTR_ERR(priv->vdev);
diff --git a/drivers/staging/media/imx/imx-media-capture.c b/drivers/staging/media/imx/imx-media-capture.c
index 93ba09236010..fdf0f3a8f253 100644
--- a/drivers/staging/media/imx/imx-media-capture.c
+++ b/drivers/staging/media/imx/imx-media-capture.c
@@ -34,6 +34,7 @@ struct capture_priv {
struct imx_media_video_dev vdev; /* Video device */
struct media_pad vdev_pad; /* Video device pad */
+ enum imx_device_type type; /* Type of hardware implementation */
struct v4l2_subdev *src_sd; /* Source subdev */
int src_sd_pad; /* Source subdev pad */
@@ -957,7 +958,8 @@ EXPORT_SYMBOL_GPL(imx_media_capture_device_unregister);
struct imx_media_video_dev *
imx_media_capture_device_init(struct device *dev, struct v4l2_subdev *src_sd,
- int pad, bool legacy_api)
+ int pad, bool legacy_api,
+ enum imx_device_type type)
{
struct capture_priv *priv;
struct video_device *vfd;
@@ -972,6 +974,7 @@ imx_media_capture_device_init(struct device *dev, struct v4l2_subdev *src_sd,
priv->src_sd_pad = pad;
priv->dev = dev;
priv->legacy_api = legacy_api;
+ priv->type = type;
mutex_init(&priv->mutex);
INIT_LIST_HEAD(&priv->ready_q);
diff --git a/drivers/staging/media/imx/imx-media-csi.c b/drivers/staging/media/imx/imx-media-csi.c
index 6a94fff49bf6..b6758c3787c7 100644
--- a/drivers/staging/media/imx/imx-media-csi.c
+++ b/drivers/staging/media/imx/imx-media-csi.c
@@ -1794,7 +1794,8 @@ static int csi_registered(struct v4l2_subdev *sd)
}
priv->vdev = imx_media_capture_device_init(priv->sd.dev, &priv->sd,
- CSI_SRC_PAD_IDMAC, true);
+ CSI_SRC_PAD_IDMAC, true,
+ DEVICE_TYPE_IMX56);
if (IS_ERR(priv->vdev)) {
ret = PTR_ERR(priv->vdev);
goto free_fim;
diff --git a/drivers/staging/media/imx/imx-media.h b/drivers/staging/media/imx/imx-media.h
index d2a150aac6cd..2bacfb96da85 100644
--- a/drivers/staging/media/imx/imx-media.h
+++ b/drivers/staging/media/imx/imx-media.h
@@ -96,6 +96,11 @@ enum imx_pixfmt_sel {
PIXFMT_SEL_ANY = PIXFMT_SEL_YUV | PIXFMT_SEL_RGB | PIXFMT_SEL_BAYER,
};
+enum imx_device_type {
+ DEVICE_TYPE_IMX56,
+ DEVICE_TYPE_IMX78,
+};
+
struct imx_media_buffer {
struct vb2_v4l2_buffer vbuf; /* v4l buffer must be first */
struct list_head list;
@@ -282,7 +287,8 @@ int imx_media_ic_unregister(struct v4l2_subdev *sd);
/* imx-media-capture.c */
struct imx_media_video_dev *
imx_media_capture_device_init(struct device *dev, struct v4l2_subdev *src_sd,
- int pad, bool legacy_api);
+ int pad, bool legacy_api,
+ enum imx_device_type type);
void imx_media_capture_device_remove(struct imx_media_video_dev *vdev);
int imx_media_capture_device_register(struct imx_media_video_dev *vdev,
u32 link_flags);
diff --git a/drivers/staging/media/imx/imx7-media-csi.c b/drivers/staging/media/imx/imx7-media-csi.c
index d7dc0d8edf50..1a11f07620e9 100644
--- a/drivers/staging/media/imx/imx7-media-csi.c
+++ b/drivers/staging/media/imx/imx7-media-csi.c
@@ -1012,7 +1012,8 @@ static int imx7_csi_registered(struct v4l2_subdev *sd)
}
csi->vdev = imx_media_capture_device_init(csi->sd.dev, &csi->sd,
- IMX7_CSI_PAD_SRC, false);
+ IMX7_CSI_PAD_SRC, false,
+ DEVICE_TYPE_IMX78);
if (IS_ERR(csi->vdev))
return PTR_ERR(csi->vdev);
--
2.31.1
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCHv2 2/4] media: imx: Store the type of hardware implementation
@ 2021-10-17 11:08 ` Dorota Czaplejewicz
0 siblings, 0 replies; 20+ messages in thread
From: Dorota Czaplejewicz @ 2021-10-17 11:08 UTC (permalink / raw)
To: Steve Longerbeam, Philipp Zabel, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
[-- Attachment #1.1: Type: text/plain, Size: 4600 bytes --]
The driver covers i.MX5/6, as well as i.MX7/8 hardware.
Those implementations differ, e.g. in the sizes of buffers they accept.
Some functionality should be abstracted, and storing type achieves that.
Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
---
drivers/staging/media/imx/imx-ic-prpencvf.c | 3 ++-
drivers/staging/media/imx/imx-media-capture.c | 5 ++++-
drivers/staging/media/imx/imx-media-csi.c | 3 ++-
drivers/staging/media/imx/imx-media.h | 8 +++++++-
drivers/staging/media/imx/imx7-media-csi.c | 3 ++-
5 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/drivers/staging/media/imx/imx-ic-prpencvf.c b/drivers/staging/media/imx/imx-ic-prpencvf.c
index d990553de87b..e06f5fbe5174 100644
--- a/drivers/staging/media/imx/imx-ic-prpencvf.c
+++ b/drivers/staging/media/imx/imx-ic-prpencvf.c
@@ -1265,7 +1265,8 @@ static int prp_registered(struct v4l2_subdev *sd)
priv->vdev = imx_media_capture_device_init(ic_priv->ipu_dev,
&ic_priv->sd,
- PRPENCVF_SRC_PAD, true);
+ PRPENCVF_SRC_PAD, true,
+ DEVICE_TYPE_IMX56);
if (IS_ERR(priv->vdev))
return PTR_ERR(priv->vdev);
diff --git a/drivers/staging/media/imx/imx-media-capture.c b/drivers/staging/media/imx/imx-media-capture.c
index 93ba09236010..fdf0f3a8f253 100644
--- a/drivers/staging/media/imx/imx-media-capture.c
+++ b/drivers/staging/media/imx/imx-media-capture.c
@@ -34,6 +34,7 @@ struct capture_priv {
struct imx_media_video_dev vdev; /* Video device */
struct media_pad vdev_pad; /* Video device pad */
+ enum imx_device_type type; /* Type of hardware implementation */
struct v4l2_subdev *src_sd; /* Source subdev */
int src_sd_pad; /* Source subdev pad */
@@ -957,7 +958,8 @@ EXPORT_SYMBOL_GPL(imx_media_capture_device_unregister);
struct imx_media_video_dev *
imx_media_capture_device_init(struct device *dev, struct v4l2_subdev *src_sd,
- int pad, bool legacy_api)
+ int pad, bool legacy_api,
+ enum imx_device_type type)
{
struct capture_priv *priv;
struct video_device *vfd;
@@ -972,6 +974,7 @@ imx_media_capture_device_init(struct device *dev, struct v4l2_subdev *src_sd,
priv->src_sd_pad = pad;
priv->dev = dev;
priv->legacy_api = legacy_api;
+ priv->type = type;
mutex_init(&priv->mutex);
INIT_LIST_HEAD(&priv->ready_q);
diff --git a/drivers/staging/media/imx/imx-media-csi.c b/drivers/staging/media/imx/imx-media-csi.c
index 6a94fff49bf6..b6758c3787c7 100644
--- a/drivers/staging/media/imx/imx-media-csi.c
+++ b/drivers/staging/media/imx/imx-media-csi.c
@@ -1794,7 +1794,8 @@ static int csi_registered(struct v4l2_subdev *sd)
}
priv->vdev = imx_media_capture_device_init(priv->sd.dev, &priv->sd,
- CSI_SRC_PAD_IDMAC, true);
+ CSI_SRC_PAD_IDMAC, true,
+ DEVICE_TYPE_IMX56);
if (IS_ERR(priv->vdev)) {
ret = PTR_ERR(priv->vdev);
goto free_fim;
diff --git a/drivers/staging/media/imx/imx-media.h b/drivers/staging/media/imx/imx-media.h
index d2a150aac6cd..2bacfb96da85 100644
--- a/drivers/staging/media/imx/imx-media.h
+++ b/drivers/staging/media/imx/imx-media.h
@@ -96,6 +96,11 @@ enum imx_pixfmt_sel {
PIXFMT_SEL_ANY = PIXFMT_SEL_YUV | PIXFMT_SEL_RGB | PIXFMT_SEL_BAYER,
};
+enum imx_device_type {
+ DEVICE_TYPE_IMX56,
+ DEVICE_TYPE_IMX78,
+};
+
struct imx_media_buffer {
struct vb2_v4l2_buffer vbuf; /* v4l buffer must be first */
struct list_head list;
@@ -282,7 +287,8 @@ int imx_media_ic_unregister(struct v4l2_subdev *sd);
/* imx-media-capture.c */
struct imx_media_video_dev *
imx_media_capture_device_init(struct device *dev, struct v4l2_subdev *src_sd,
- int pad, bool legacy_api);
+ int pad, bool legacy_api,
+ enum imx_device_type type);
void imx_media_capture_device_remove(struct imx_media_video_dev *vdev);
int imx_media_capture_device_register(struct imx_media_video_dev *vdev,
u32 link_flags);
diff --git a/drivers/staging/media/imx/imx7-media-csi.c b/drivers/staging/media/imx/imx7-media-csi.c
index d7dc0d8edf50..1a11f07620e9 100644
--- a/drivers/staging/media/imx/imx7-media-csi.c
+++ b/drivers/staging/media/imx/imx7-media-csi.c
@@ -1012,7 +1012,8 @@ static int imx7_csi_registered(struct v4l2_subdev *sd)
}
csi->vdev = imx_media_capture_device_init(csi->sd.dev, &csi->sd,
- IMX7_CSI_PAD_SRC, false);
+ IMX7_CSI_PAD_SRC, false,
+ DEVICE_TYPE_IMX78);
if (IS_ERR(csi->vdev))
return PTR_ERR(csi->vdev);
--
2.31.1
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
[-- Attachment #2: Type: text/plain, Size: 176 bytes --]
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCHv2 2/4] media: imx: Store the type of hardware implementation
2021-10-17 11:08 ` Dorota Czaplejewicz
@ 2021-10-18 10:20 ` Philipp Zabel
-1 siblings, 0 replies; 20+ messages in thread
From: Philipp Zabel @ 2021-10-18 10:20 UTC (permalink / raw)
To: Dorota Czaplejewicz, Steve Longerbeam, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
On Sun, 2021-10-17 at 13:08 +0200, Dorota Czaplejewicz wrote:
> The driver covers i.MX5/6, as well as i.MX7/8 hardware.
> Those implementations differ, e.g. in the sizes of buffers they accept.
>
> Some functionality should be abstracted, and storing type achieves that.
>
> Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
I'd call the enum imx_media_device_type, but that's just a slight
preference:
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
regards
Philipp
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCHv2 2/4] media: imx: Store the type of hardware implementation
@ 2021-10-18 10:20 ` Philipp Zabel
0 siblings, 0 replies; 20+ messages in thread
From: Philipp Zabel @ 2021-10-18 10:20 UTC (permalink / raw)
To: Dorota Czaplejewicz, Steve Longerbeam, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
On Sun, 2021-10-17 at 13:08 +0200, Dorota Czaplejewicz wrote:
> The driver covers i.MX5/6, as well as i.MX7/8 hardware.
> Those implementations differ, e.g. in the sizes of buffers they accept.
>
> Some functionality should be abstracted, and storing type achieves that.
>
> Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
I'd call the enum imx_media_device_type, but that's just a slight
preference:
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
regards
Philipp
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCHv2 3/4] media: imx: Forward type of hardware implementation
2021-10-17 11:08 ` Dorota Czaplejewicz
@ 2021-10-17 11:08 ` Dorota Czaplejewicz
-1 siblings, 0 replies; 20+ messages in thread
From: Dorota Czaplejewicz @ 2021-10-17 11:08 UTC (permalink / raw)
To: Steve Longerbeam, Philipp Zabel, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
[-- Attachment #1: Type: text/plain, Size: 3882 bytes --]
Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
---
drivers/staging/media/imx/imx-media-capture.c | 14 ++++++++------
drivers/staging/media/imx/imx-media-utils.c | 3 ++-
drivers/staging/media/imx/imx-media.h | 3 ++-
3 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/drivers/staging/media/imx/imx-media-capture.c b/drivers/staging/media/imx/imx-media-capture.c
index fdf0f3a8f253..22208b7ce825 100644
--- a/drivers/staging/media/imx/imx-media-capture.c
+++ b/drivers/staging/media/imx/imx-media-capture.c
@@ -139,7 +139,8 @@ static int capture_g_fmt_vid_cap(struct file *file, void *fh,
}
static const struct imx_media_pixfmt *
-__capture_try_fmt(struct v4l2_pix_format *pixfmt, struct v4l2_rect *compose)
+__capture_try_fmt(struct v4l2_pix_format *pixfmt, struct v4l2_rect *compose,
+ enum imx_device_type type)
{
struct v4l2_mbus_framefmt fmt_src;
const struct imx_media_pixfmt *cc;
@@ -171,7 +172,7 @@ __capture_try_fmt(struct v4l2_pix_format *pixfmt, struct v4l2_rect *compose)
}
v4l2_fill_mbus_format(&fmt_src, pixfmt, 0);
- imx_media_mbus_fmt_to_pix_fmt(pixfmt, &fmt_src, cc);
+ imx_media_mbus_fmt_to_pix_fmt(pixfmt, &fmt_src, cc, type);
if (compose) {
compose->width = fmt_src.width;
@@ -184,7 +185,8 @@ __capture_try_fmt(struct v4l2_pix_format *pixfmt, struct v4l2_rect *compose)
static int capture_try_fmt_vid_cap(struct file *file, void *fh,
struct v4l2_format *f)
{
- __capture_try_fmt(&f->fmt.pix, NULL);
+ struct capture_priv *priv = video_drvdata(file);
+ __capture_try_fmt(&f->fmt.pix, NULL, priv->type);
return 0;
}
@@ -199,7 +201,7 @@ static int capture_s_fmt_vid_cap(struct file *file, void *fh,
return -EBUSY;
}
- cc = __capture_try_fmt(&f->fmt.pix, &priv->vdev.compose);
+ cc = __capture_try_fmt(&f->fmt.pix, &priv->vdev.compose, priv->type);
priv->vdev.cc = cc;
priv->vdev.fmt = f->fmt.pix;
@@ -418,7 +420,7 @@ __capture_legacy_try_fmt(struct capture_priv *priv,
}
}
- imx_media_mbus_fmt_to_pix_fmt(pixfmt, &fmt_src->format, cc);
+ imx_media_mbus_fmt_to_pix_fmt(pixfmt, &fmt_src->format, cc, priv->type);
return cc;
}
@@ -889,7 +891,7 @@ static int capture_init_format(struct capture_priv *priv)
fmt_src.format.height = IMX_MEDIA_DEF_PIX_HEIGHT;
}
- imx_media_mbus_fmt_to_pix_fmt(&vdev->fmt, &fmt_src.format, NULL);
+ imx_media_mbus_fmt_to_pix_fmt(&vdev->fmt, &fmt_src.format, NULL, priv->type);
vdev->compose.width = fmt_src.format.width;
vdev->compose.height = fmt_src.format.height;
diff --git a/drivers/staging/media/imx/imx-media-utils.c b/drivers/staging/media/imx/imx-media-utils.c
index afa96e05ea7f..e124dd722107 100644
--- a/drivers/staging/media/imx/imx-media-utils.c
+++ b/drivers/staging/media/imx/imx-media-utils.c
@@ -518,7 +518,8 @@ 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)
+ const struct imx_media_pixfmt *cc,
+ enum imx_device_type type)
{
u32 width;
u32 stride;
diff --git a/drivers/staging/media/imx/imx-media.h b/drivers/staging/media/imx/imx-media.h
index 2bacfb96da85..4ecfa6c51994 100644
--- a/drivers/staging/media/imx/imx-media.h
+++ b/drivers/staging/media/imx/imx-media.h
@@ -203,7 +203,8 @@ void imx_media_try_colorimetry(struct v4l2_mbus_framefmt *tryfmt,
bool ic_route);
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);
+ const struct imx_media_pixfmt *cc,
+ enum imx_device_type type);
void imx_media_grp_id_to_sd_name(char *sd_name, int sz,
u32 grp_id, int ipu_id);
struct v4l2_subdev *
--
2.31.1
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCHv2 3/4] media: imx: Forward type of hardware implementation
@ 2021-10-17 11:08 ` Dorota Czaplejewicz
0 siblings, 0 replies; 20+ messages in thread
From: Dorota Czaplejewicz @ 2021-10-17 11:08 UTC (permalink / raw)
To: Steve Longerbeam, Philipp Zabel, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
[-- Attachment #1.1: Type: text/plain, Size: 3882 bytes --]
Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
---
drivers/staging/media/imx/imx-media-capture.c | 14 ++++++++------
drivers/staging/media/imx/imx-media-utils.c | 3 ++-
drivers/staging/media/imx/imx-media.h | 3 ++-
3 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/drivers/staging/media/imx/imx-media-capture.c b/drivers/staging/media/imx/imx-media-capture.c
index fdf0f3a8f253..22208b7ce825 100644
--- a/drivers/staging/media/imx/imx-media-capture.c
+++ b/drivers/staging/media/imx/imx-media-capture.c
@@ -139,7 +139,8 @@ static int capture_g_fmt_vid_cap(struct file *file, void *fh,
}
static const struct imx_media_pixfmt *
-__capture_try_fmt(struct v4l2_pix_format *pixfmt, struct v4l2_rect *compose)
+__capture_try_fmt(struct v4l2_pix_format *pixfmt, struct v4l2_rect *compose,
+ enum imx_device_type type)
{
struct v4l2_mbus_framefmt fmt_src;
const struct imx_media_pixfmt *cc;
@@ -171,7 +172,7 @@ __capture_try_fmt(struct v4l2_pix_format *pixfmt, struct v4l2_rect *compose)
}
v4l2_fill_mbus_format(&fmt_src, pixfmt, 0);
- imx_media_mbus_fmt_to_pix_fmt(pixfmt, &fmt_src, cc);
+ imx_media_mbus_fmt_to_pix_fmt(pixfmt, &fmt_src, cc, type);
if (compose) {
compose->width = fmt_src.width;
@@ -184,7 +185,8 @@ __capture_try_fmt(struct v4l2_pix_format *pixfmt, struct v4l2_rect *compose)
static int capture_try_fmt_vid_cap(struct file *file, void *fh,
struct v4l2_format *f)
{
- __capture_try_fmt(&f->fmt.pix, NULL);
+ struct capture_priv *priv = video_drvdata(file);
+ __capture_try_fmt(&f->fmt.pix, NULL, priv->type);
return 0;
}
@@ -199,7 +201,7 @@ static int capture_s_fmt_vid_cap(struct file *file, void *fh,
return -EBUSY;
}
- cc = __capture_try_fmt(&f->fmt.pix, &priv->vdev.compose);
+ cc = __capture_try_fmt(&f->fmt.pix, &priv->vdev.compose, priv->type);
priv->vdev.cc = cc;
priv->vdev.fmt = f->fmt.pix;
@@ -418,7 +420,7 @@ __capture_legacy_try_fmt(struct capture_priv *priv,
}
}
- imx_media_mbus_fmt_to_pix_fmt(pixfmt, &fmt_src->format, cc);
+ imx_media_mbus_fmt_to_pix_fmt(pixfmt, &fmt_src->format, cc, priv->type);
return cc;
}
@@ -889,7 +891,7 @@ static int capture_init_format(struct capture_priv *priv)
fmt_src.format.height = IMX_MEDIA_DEF_PIX_HEIGHT;
}
- imx_media_mbus_fmt_to_pix_fmt(&vdev->fmt, &fmt_src.format, NULL);
+ imx_media_mbus_fmt_to_pix_fmt(&vdev->fmt, &fmt_src.format, NULL, priv->type);
vdev->compose.width = fmt_src.format.width;
vdev->compose.height = fmt_src.format.height;
diff --git a/drivers/staging/media/imx/imx-media-utils.c b/drivers/staging/media/imx/imx-media-utils.c
index afa96e05ea7f..e124dd722107 100644
--- a/drivers/staging/media/imx/imx-media-utils.c
+++ b/drivers/staging/media/imx/imx-media-utils.c
@@ -518,7 +518,8 @@ 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)
+ const struct imx_media_pixfmt *cc,
+ enum imx_device_type type)
{
u32 width;
u32 stride;
diff --git a/drivers/staging/media/imx/imx-media.h b/drivers/staging/media/imx/imx-media.h
index 2bacfb96da85..4ecfa6c51994 100644
--- a/drivers/staging/media/imx/imx-media.h
+++ b/drivers/staging/media/imx/imx-media.h
@@ -203,7 +203,8 @@ void imx_media_try_colorimetry(struct v4l2_mbus_framefmt *tryfmt,
bool ic_route);
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);
+ const struct imx_media_pixfmt *cc,
+ enum imx_device_type type);
void imx_media_grp_id_to_sd_name(char *sd_name, int sz,
u32 grp_id, int ipu_id);
struct v4l2_subdev *
--
2.31.1
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
[-- Attachment #2: Type: text/plain, Size: 176 bytes --]
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCHv2 3/4] media: imx: Forward type of hardware implementation
2021-10-17 11:08 ` Dorota Czaplejewicz
@ 2021-10-18 10:20 ` Philipp Zabel
-1 siblings, 0 replies; 20+ messages in thread
From: Philipp Zabel @ 2021-10-18 10:20 UTC (permalink / raw)
To: Dorota Czaplejewicz, Steve Longerbeam, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
On Sun, 2021-10-17 at 13:08 +0200, Dorota Czaplejewicz wrote:
> Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
> ---
> drivers/staging/media/imx/imx-media-capture.c | 14 ++++++++------
> drivers/staging/media/imx/imx-media-utils.c | 3 ++-
> drivers/staging/media/imx/imx-media.h | 3 ++-
> 3 files changed, 12 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/staging/media/imx/imx-media-capture.c b/drivers/staging/media/imx/imx-media-capture.c
> index fdf0f3a8f253..22208b7ce825 100644
> --- a/drivers/staging/media/imx/imx-media-capture.c
> +++ b/drivers/staging/media/imx/imx-media-capture.c
[...]
> @@ -184,7 +185,8 @@ __capture_try_fmt(struct v4l2_pix_format *pixfmt, struct v4l2_rect *compose)
> static int capture_try_fmt_vid_cap(struct file *file, void *fh,
> struct v4l2_format *f)
> {
> - __capture_try_fmt(&f->fmt.pix, NULL);
> + struct capture_priv *priv = video_drvdata(file);
Missing blank line.
> + __capture_try_fmt(&f->fmt.pix, NULL, priv->type);
> return 0;
> }
>
With that fixed,
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
regards
Philipp
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCHv2 3/4] media: imx: Forward type of hardware implementation
@ 2021-10-18 10:20 ` Philipp Zabel
0 siblings, 0 replies; 20+ messages in thread
From: Philipp Zabel @ 2021-10-18 10:20 UTC (permalink / raw)
To: Dorota Czaplejewicz, Steve Longerbeam, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
On Sun, 2021-10-17 at 13:08 +0200, Dorota Czaplejewicz wrote:
> Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
> ---
> drivers/staging/media/imx/imx-media-capture.c | 14 ++++++++------
> drivers/staging/media/imx/imx-media-utils.c | 3 ++-
> drivers/staging/media/imx/imx-media.h | 3 ++-
> 3 files changed, 12 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/staging/media/imx/imx-media-capture.c b/drivers/staging/media/imx/imx-media-capture.c
> index fdf0f3a8f253..22208b7ce825 100644
> --- a/drivers/staging/media/imx/imx-media-capture.c
> +++ b/drivers/staging/media/imx/imx-media-capture.c
[...]
> @@ -184,7 +185,8 @@ __capture_try_fmt(struct v4l2_pix_format *pixfmt, struct v4l2_rect *compose)
> static int capture_try_fmt_vid_cap(struct file *file, void *fh,
> struct v4l2_format *f)
> {
> - __capture_try_fmt(&f->fmt.pix, NULL);
> + struct capture_priv *priv = video_drvdata(file);
Missing blank line.
> + __capture_try_fmt(&f->fmt.pix, NULL, priv->type);
> return 0;
> }
>
With that fixed,
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
regards
Philipp
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCHv2 4/4] media: imx: Use dedicated format handler for i.MX7/8
2021-10-17 11:08 ` Dorota Czaplejewicz
@ 2021-10-17 11:08 ` Dorota Czaplejewicz
-1 siblings, 0 replies; 20+ messages in thread
From: Dorota Czaplejewicz @ 2021-10-17 11:08 UTC (permalink / raw)
To: Steve Longerbeam, Philipp Zabel, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
[-- Attachment #1: Type: text/plain, Size: 3415 bytes --]
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>
---
drivers/staging/media/imx/imx-media-utils.c | 78 +++++++++++++++++++--
1 file changed, 74 insertions(+), 4 deletions(-)
diff --git a/drivers/staging/media/imx/imx-media-utils.c b/drivers/staging/media/imx/imx-media-utils.c
index e124dd722107..938db2e2ddb1 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_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,77 @@ 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 width;
+ u32 stride;
+ u8 divisor;
+
+ if (!cc) {
+ cc = imx_media_find_ipu_format(mbus->code,
+ PIXFMT_SEL_YUV_RGB);
+ if (!cc)
+ cc = imx_media_find_mbus_format(mbus->code,
+ PIXFMT_SEL_ANY);
+ if (!cc)
+ return -EINVAL;
+ }
+
+ /*
+ * TODO: the IPU currently does not support the AYUV32 format,
+ * so until it does convert to a supported YUV format.
+ */
+ if (cc->ipufmt && cc->cs == IPUV3_COLORSPACE_YUV) {
+ u32 code;
+
+ imx_media_enum_mbus_formats(&code, 0, PIXFMT_SEL_YUV);
+ cc = imx_media_find_mbus_format(code, PIXFMT_SEL_YUV);
+ }
+
+ /*
+ * The hardware can handle line lengths divisible by 4 bytes,
+ * as long as the number of lines is even.
+ * Otherwise, use the value of 8 bytes recommended in the datasheet.
+ */
+ divisor = 4 << (mbus->height % 2);
+
+ width = round_up(mbus->width, divisor);
+
+ if (cc->planar)
+ stride = round_up(width, 16);
+ else
+ stride = round_up((width * cc->bpp) >> 3, divisor);
+
+ pix->width = width;
+ pix->height = mbus->height;
+ pix->pixelformat = cc->fourcc;
+ pix->colorspace = mbus->colorspace;
+ pix->xfer_func = mbus->xfer_func;
+ pix->ycbcr_enc = mbus->ycbcr_enc;
+ pix->quantization = mbus->quantization;
+ pix->field = mbus->field;
+ pix->bytesperline = stride;
+ pix->sizeimage = cc->planar ? ((stride * pix->height * cc->bpp) >> 3) :
+ stride * pix->height;
+
+ return 0;
+}
+
+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_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.31.1
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCHv2 4/4] media: imx: Use dedicated format handler for i.MX7/8
@ 2021-10-17 11:08 ` Dorota Czaplejewicz
0 siblings, 0 replies; 20+ messages in thread
From: Dorota Czaplejewicz @ 2021-10-17 11:08 UTC (permalink / raw)
To: Steve Longerbeam, Philipp Zabel, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
[-- Attachment #1.1: Type: text/plain, Size: 3415 bytes --]
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>
---
drivers/staging/media/imx/imx-media-utils.c | 78 +++++++++++++++++++--
1 file changed, 74 insertions(+), 4 deletions(-)
diff --git a/drivers/staging/media/imx/imx-media-utils.c b/drivers/staging/media/imx/imx-media-utils.c
index e124dd722107..938db2e2ddb1 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_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,77 @@ 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 width;
+ u32 stride;
+ u8 divisor;
+
+ if (!cc) {
+ cc = imx_media_find_ipu_format(mbus->code,
+ PIXFMT_SEL_YUV_RGB);
+ if (!cc)
+ cc = imx_media_find_mbus_format(mbus->code,
+ PIXFMT_SEL_ANY);
+ if (!cc)
+ return -EINVAL;
+ }
+
+ /*
+ * TODO: the IPU currently does not support the AYUV32 format,
+ * so until it does convert to a supported YUV format.
+ */
+ if (cc->ipufmt && cc->cs == IPUV3_COLORSPACE_YUV) {
+ u32 code;
+
+ imx_media_enum_mbus_formats(&code, 0, PIXFMT_SEL_YUV);
+ cc = imx_media_find_mbus_format(code, PIXFMT_SEL_YUV);
+ }
+
+ /*
+ * The hardware can handle line lengths divisible by 4 bytes,
+ * as long as the number of lines is even.
+ * Otherwise, use the value of 8 bytes recommended in the datasheet.
+ */
+ divisor = 4 << (mbus->height % 2);
+
+ width = round_up(mbus->width, divisor);
+
+ if (cc->planar)
+ stride = round_up(width, 16);
+ else
+ stride = round_up((width * cc->bpp) >> 3, divisor);
+
+ pix->width = width;
+ pix->height = mbus->height;
+ pix->pixelformat = cc->fourcc;
+ pix->colorspace = mbus->colorspace;
+ pix->xfer_func = mbus->xfer_func;
+ pix->ycbcr_enc = mbus->ycbcr_enc;
+ pix->quantization = mbus->quantization;
+ pix->field = mbus->field;
+ pix->bytesperline = stride;
+ pix->sizeimage = cc->planar ? ((stride * pix->height * cc->bpp) >> 3) :
+ stride * pix->height;
+
+ return 0;
+}
+
+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_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.31.1
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
[-- Attachment #2: Type: text/plain, Size: 176 bytes --]
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCHv2 4/4] media: imx: Use dedicated format handler for i.MX7/8
2021-10-17 11:08 ` Dorota Czaplejewicz
@ 2021-10-18 10:20 ` Philipp Zabel
-1 siblings, 0 replies; 20+ messages in thread
From: Philipp Zabel @ 2021-10-18 10:20 UTC (permalink / raw)
To: Dorota Czaplejewicz, Steve Longerbeam, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
Hi Dorota,
On Sun, 2021-10-17 at 13:08 +0200, Dorota Czaplejewicz wrote:
> 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>
Thank you, I agree this looks better than moving
imx_media_mbus_fmt_to_pix_fmt around. Comments below.
> ---
> drivers/staging/media/imx/imx-media-utils.c | 78 +++++++++++++++++++--
> 1 file changed, 74 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/staging/media/imx/imx-media-utils.c b/drivers/staging/media/imx/imx-media-utils.c
> index e124dd722107..938db2e2ddb1 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_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,77 @@ 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 width;
> + u32 stride;
> + u8 divisor;
> +
> + if (!cc) {
> + cc = imx_media_find_ipu_format(mbus->code,
> + PIXFMT_SEL_YUV_RGB);
> + if (!cc)
> + cc = imx_media_find_mbus_format(mbus->code,
> + PIXFMT_SEL_ANY);
> + if (!cc)
> + return -EINVAL;
> + }
> +
> + /*
> + * TODO: the IPU currently does not support the AYUV32 format,
> + * so until it does convert to a supported YUV format.
> + */
> + if (cc->ipufmt && cc->cs == IPUV3_COLORSPACE_YUV) {
> + u32 code;
> +
> + imx_media_enum_mbus_formats(&code, 0, PIXFMT_SEL_YUV);
> + cc = imx_media_find_mbus_format(code, PIXFMT_SEL_YUV);
> + }
This whole part seems too convoluted for the non-IPU CSI on i.MX7/8.
Certainly the TODO comment does not apply. There is no IPU on i.MX7/8,
and the CSI does not support AYUV32 if I read the datasheet correctly.
imx_media_find_ipu_format() just returns the two IPU internal 32-bit
formats, MEDIA_BUS_FMT_AYUV8_1X32/V4L2_PIX_FMT_YUV32 and
MEDIA_BUS_FMT_ARGB8888_1X32/V4L2_PIX_FMT_XRGB32, both of which can never
be set according to imx7_csi_pad_link_validate(). So I think this could
be reduced to just:
if (!cc)
cc = imx_media_find_mbus_format(mbus->code, PIXFMT_SEL_ANY);
After the removal of imx_media_mbus_fmt_to_ipu_image(), the only place
where imx_media_find_mbus_format() is called with cc == NULL is
in capture_init_format(), with mbus format code MEDIA_BUS_FMT_UYVY8_2X8.
> +
> + /*
> + * The hardware can handle line lengths divisible by 4 bytes,
> + * as long as the number of lines is even.
> + * Otherwise, use the value of 8 bytes recommended in the datasheet.
> + */
The comment talks about byte alignment but then the code goes on to
align the width in pixels, which may be confusing to the reader.
> + divisor = 4 << (mbus->height % 2);
Since this is not used to actually divide anything, I'd avoid calling
this divisor. I'd suggest "align(ment)" or something similar.
Also I'd expect that for 16-bit formats like YUYV, 4 pixel alignment
should be ok for any height.
> +
> + width = round_up(mbus->width, divisor);
> +
> + if (cc->planar)
> + stride = round_up(width, 16);
> + else
> + stride = round_up((width * cc->bpp) >> 3, divisor);
This is probably incorrect, and the driver doesn't use bytesperline
anyway. I think the following should probably just use
v4l2_fill_pixfmt() to set width, height, pixelformat, bytesperline, and
sizeimage:
> +
> + pix->width = width;
> + pix->height = mbus->height;
> + pix->pixelformat = cc->fourcc;
> + pix->colorspace = mbus->colorspace;
> + pix->xfer_func = mbus->xfer_func;
> + pix->ycbcr_enc = mbus->ycbcr_enc;
> + pix->quantization = mbus->quantization;
> + pix->field = mbus->field;
> + pix->bytesperline = stride;
> + pix->sizeimage = cc->planar ? ((stride * pix->height * cc->bpp) >> 3) :
> + stride * pix->height;
regards
Philipp
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCHv2 4/4] media: imx: Use dedicated format handler for i.MX7/8
@ 2021-10-18 10:20 ` Philipp Zabel
0 siblings, 0 replies; 20+ messages in thread
From: Philipp Zabel @ 2021-10-18 10:20 UTC (permalink / raw)
To: Dorota Czaplejewicz, Steve Longerbeam, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
Hi Dorota,
On Sun, 2021-10-17 at 13:08 +0200, Dorota Czaplejewicz wrote:
> 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>
Thank you, I agree this looks better than moving
imx_media_mbus_fmt_to_pix_fmt around. Comments below.
> ---
> drivers/staging/media/imx/imx-media-utils.c | 78 +++++++++++++++++++--
> 1 file changed, 74 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/staging/media/imx/imx-media-utils.c b/drivers/staging/media/imx/imx-media-utils.c
> index e124dd722107..938db2e2ddb1 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_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,77 @@ 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 width;
> + u32 stride;
> + u8 divisor;
> +
> + if (!cc) {
> + cc = imx_media_find_ipu_format(mbus->code,
> + PIXFMT_SEL_YUV_RGB);
> + if (!cc)
> + cc = imx_media_find_mbus_format(mbus->code,
> + PIXFMT_SEL_ANY);
> + if (!cc)
> + return -EINVAL;
> + }
> +
> + /*
> + * TODO: the IPU currently does not support the AYUV32 format,
> + * so until it does convert to a supported YUV format.
> + */
> + if (cc->ipufmt && cc->cs == IPUV3_COLORSPACE_YUV) {
> + u32 code;
> +
> + imx_media_enum_mbus_formats(&code, 0, PIXFMT_SEL_YUV);
> + cc = imx_media_find_mbus_format(code, PIXFMT_SEL_YUV);
> + }
This whole part seems too convoluted for the non-IPU CSI on i.MX7/8.
Certainly the TODO comment does not apply. There is no IPU on i.MX7/8,
and the CSI does not support AYUV32 if I read the datasheet correctly.
imx_media_find_ipu_format() just returns the two IPU internal 32-bit
formats, MEDIA_BUS_FMT_AYUV8_1X32/V4L2_PIX_FMT_YUV32 and
MEDIA_BUS_FMT_ARGB8888_1X32/V4L2_PIX_FMT_XRGB32, both of which can never
be set according to imx7_csi_pad_link_validate(). So I think this could
be reduced to just:
if (!cc)
cc = imx_media_find_mbus_format(mbus->code, PIXFMT_SEL_ANY);
After the removal of imx_media_mbus_fmt_to_ipu_image(), the only place
where imx_media_find_mbus_format() is called with cc == NULL is
in capture_init_format(), with mbus format code MEDIA_BUS_FMT_UYVY8_2X8.
> +
> + /*
> + * The hardware can handle line lengths divisible by 4 bytes,
> + * as long as the number of lines is even.
> + * Otherwise, use the value of 8 bytes recommended in the datasheet.
> + */
The comment talks about byte alignment but then the code goes on to
align the width in pixels, which may be confusing to the reader.
> + divisor = 4 << (mbus->height % 2);
Since this is not used to actually divide anything, I'd avoid calling
this divisor. I'd suggest "align(ment)" or something similar.
Also I'd expect that for 16-bit formats like YUYV, 4 pixel alignment
should be ok for any height.
> +
> + width = round_up(mbus->width, divisor);
> +
> + if (cc->planar)
> + stride = round_up(width, 16);
> + else
> + stride = round_up((width * cc->bpp) >> 3, divisor);
This is probably incorrect, and the driver doesn't use bytesperline
anyway. I think the following should probably just use
v4l2_fill_pixfmt() to set width, height, pixelformat, bytesperline, and
sizeimage:
> +
> + pix->width = width;
> + pix->height = mbus->height;
> + pix->pixelformat = cc->fourcc;
> + pix->colorspace = mbus->colorspace;
> + pix->xfer_func = mbus->xfer_func;
> + pix->ycbcr_enc = mbus->ycbcr_enc;
> + pix->quantization = mbus->quantization;
> + pix->field = mbus->field;
> + pix->bytesperline = stride;
> + pix->sizeimage = cc->planar ? ((stride * pix->height * cc->bpp) >> 3) :
> + stride * pix->height;
regards
Philipp
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCHv2 4/4] media: imx: Use dedicated format handler for i.MX7/8
2021-10-17 11:08 ` Dorota Czaplejewicz
@ 2021-11-03 10:41 ` Dan Carpenter
-1 siblings, 0 replies; 20+ messages in thread
From: Dan Carpenter @ 2021-11-03 10:41 UTC (permalink / raw)
To: Dorota Czaplejewicz
Cc: Steve Longerbeam, Philipp Zabel, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
On Sun, Oct 17, 2021 at 01:08:37PM +0200, Dorota Czaplejewicz wrote:
> +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 width;
> + u32 stride;
> + u8 divisor;
> +
> + if (!cc) {
> + cc = imx_media_find_ipu_format(mbus->code,
> + PIXFMT_SEL_YUV_RGB);
> + if (!cc)
> + cc = imx_media_find_mbus_format(mbus->code,
> + PIXFMT_SEL_ANY);
> + if (!cc)
> + return -EINVAL;
> + }
> +
> + /*
> + * TODO: the IPU currently does not support the AYUV32 format,
> + * so until it does convert to a supported YUV format.
> + */
> + if (cc->ipufmt && cc->cs == IPUV3_COLORSPACE_YUV) {
> + u32 code;
> +
> + imx_media_enum_mbus_formats(&code, 0, PIXFMT_SEL_YUV);
> + cc = imx_media_find_mbus_format(code, PIXFMT_SEL_YUV);
Do we need a if (!cc) NULL check after this assignment?
> + }
> +
> + /*
> + * The hardware can handle line lengths divisible by 4 bytes,
> + * as long as the number of lines is even.
> + * Otherwise, use the value of 8 bytes recommended in the datasheet.
> + */
> + divisor = 4 << (mbus->height % 2);
> +
> + width = round_up(mbus->width, divisor);
> +
> + if (cc->planar)
> + stride = round_up(width, 16);
> + else
> + stride = round_up((width * cc->bpp) >> 3, divisor);
> +
> + pix->width = width;
> + pix->height = mbus->height;
> + pix->pixelformat = cc->fourcc;
> + pix->colorspace = mbus->colorspace;
> + pix->xfer_func = mbus->xfer_func;
> + pix->ycbcr_enc = mbus->ycbcr_enc;
> + pix->quantization = mbus->quantization;
> + pix->field = mbus->field;
> + pix->bytesperline = stride;
> + pix->sizeimage = cc->planar ? ((stride * pix->height * cc->bpp) >> 3) :
> + stride * pix->height;
> +
> + return 0;
> +}
regards,
dan carpenter
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCHv2 4/4] media: imx: Use dedicated format handler for i.MX7/8
@ 2021-11-03 10:41 ` Dan Carpenter
0 siblings, 0 replies; 20+ messages in thread
From: Dan Carpenter @ 2021-11-03 10:41 UTC (permalink / raw)
To: Dorota Czaplejewicz
Cc: Steve Longerbeam, Philipp Zabel, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
On Sun, Oct 17, 2021 at 01:08:37PM +0200, Dorota Czaplejewicz wrote:
> +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 width;
> + u32 stride;
> + u8 divisor;
> +
> + if (!cc) {
> + cc = imx_media_find_ipu_format(mbus->code,
> + PIXFMT_SEL_YUV_RGB);
> + if (!cc)
> + cc = imx_media_find_mbus_format(mbus->code,
> + PIXFMT_SEL_ANY);
> + if (!cc)
> + return -EINVAL;
> + }
> +
> + /*
> + * TODO: the IPU currently does not support the AYUV32 format,
> + * so until it does convert to a supported YUV format.
> + */
> + if (cc->ipufmt && cc->cs == IPUV3_COLORSPACE_YUV) {
> + u32 code;
> +
> + imx_media_enum_mbus_formats(&code, 0, PIXFMT_SEL_YUV);
> + cc = imx_media_find_mbus_format(code, PIXFMT_SEL_YUV);
Do we need a if (!cc) NULL check after this assignment?
> + }
> +
> + /*
> + * The hardware can handle line lengths divisible by 4 bytes,
> + * as long as the number of lines is even.
> + * Otherwise, use the value of 8 bytes recommended in the datasheet.
> + */
> + divisor = 4 << (mbus->height % 2);
> +
> + width = round_up(mbus->width, divisor);
> +
> + if (cc->planar)
> + stride = round_up(width, 16);
> + else
> + stride = round_up((width * cc->bpp) >> 3, divisor);
> +
> + pix->width = width;
> + pix->height = mbus->height;
> + pix->pixelformat = cc->fourcc;
> + pix->colorspace = mbus->colorspace;
> + pix->xfer_func = mbus->xfer_func;
> + pix->ycbcr_enc = mbus->ycbcr_enc;
> + pix->quantization = mbus->quantization;
> + pix->field = mbus->field;
> + pix->bytesperline = stride;
> + pix->sizeimage = cc->planar ? ((stride * pix->height * cc->bpp) >> 3) :
> + stride * pix->height;
> +
> + return 0;
> +}
regards,
dan carpenter
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCHv2 4/4] media: imx: Use dedicated format handler for i.MX7/8
2021-11-03 10:41 ` Dan Carpenter
@ 2021-11-04 11:45 ` Dorota Czaplejewicz
-1 siblings, 0 replies; 20+ messages in thread
From: Dorota Czaplejewicz @ 2021-11-04 11:45 UTC (permalink / raw)
To: Dan Carpenter
Cc: Steve Longerbeam, Philipp Zabel, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
[-- Attachment #1: Type: text/plain, Size: 2511 bytes --]
Hi,
On Wed, 3 Nov 2021 13:41:00 +0300
Dan Carpenter <dan.carpenter@oracle.com> wrote:
> On Sun, Oct 17, 2021 at 01:08:37PM +0200, Dorota Czaplejewicz wrote:
> > +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 width;
> > + u32 stride;
> > + u8 divisor;
> > +
> > + if (!cc) {
> > + cc = imx_media_find_ipu_format(mbus->code,
> > + PIXFMT_SEL_YUV_RGB);
> > + if (!cc)
> > + cc = imx_media_find_mbus_format(mbus->code,
> > + PIXFMT_SEL_ANY);
> > + if (!cc)
> > + return -EINVAL;
> > + }
> > +
> > + /*
> > + * TODO: the IPU currently does not support the AYUV32 format,
> > + * so until it does convert to a supported YUV format.
> > + */
> > + if (cc->ipufmt && cc->cs == IPUV3_COLORSPACE_YUV) {
> > + u32 code;
> > +
> > + imx_media_enum_mbus_formats(&code, 0, PIXFMT_SEL_YUV);
> > + cc = imx_media_find_mbus_format(code, PIXFMT_SEL_YUV);
>
> Do we need a if (!cc) NULL check after this assignment?
In v3 of this series, this statement is only present in the IMX56 code path, which is unmodified compared to the original.
However, there's a missing check in the IMX78. I'm not sure if those can fail in practice, but for the sake of correctness, I rolled out an updated v4 series, where both checks are present. Message-id: 20211104113631.206899-1-dorota.czaplejewicz@puri.sm
Cheers,
Dorota
>
> > + }
> > +
> > + /*
> > + * The hardware can handle line lengths divisible by 4 bytes,
> > + * as long as the number of lines is even.
> > + * Otherwise, use the value of 8 bytes recommended in the datasheet.
> > + */
> > + divisor = 4 << (mbus->height % 2);
> > +
> > + width = round_up(mbus->width, divisor);
> > +
> > + if (cc->planar)
> > + stride = round_up(width, 16);
> > + else
> > + stride = round_up((width * cc->bpp) >> 3, divisor);
> > +
> > + pix->width = width;
> > + pix->height = mbus->height;
> > + pix->pixelformat = cc->fourcc;
> > + pix->colorspace = mbus->colorspace;
> > + pix->xfer_func = mbus->xfer_func;
> > + pix->ycbcr_enc = mbus->ycbcr_enc;
> > + pix->quantization = mbus->quantization;
> > + pix->field = mbus->field;
> > + pix->bytesperline = stride;
> > + pix->sizeimage = cc->planar ? ((stride * pix->height * cc->bpp) >> 3) :
> > + stride * pix->height;
> > +
> > + return 0;
> > +}
>
> regards,
> dan carpenter
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCHv2 4/4] media: imx: Use dedicated format handler for i.MX7/8
@ 2021-11-04 11:45 ` Dorota Czaplejewicz
0 siblings, 0 replies; 20+ messages in thread
From: Dorota Czaplejewicz @ 2021-11-04 11:45 UTC (permalink / raw)
To: Dan Carpenter
Cc: Steve Longerbeam, Philipp Zabel, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
[-- Attachment #1.1: Type: text/plain, Size: 2511 bytes --]
Hi,
On Wed, 3 Nov 2021 13:41:00 +0300
Dan Carpenter <dan.carpenter@oracle.com> wrote:
> On Sun, Oct 17, 2021 at 01:08:37PM +0200, Dorota Czaplejewicz wrote:
> > +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 width;
> > + u32 stride;
> > + u8 divisor;
> > +
> > + if (!cc) {
> > + cc = imx_media_find_ipu_format(mbus->code,
> > + PIXFMT_SEL_YUV_RGB);
> > + if (!cc)
> > + cc = imx_media_find_mbus_format(mbus->code,
> > + PIXFMT_SEL_ANY);
> > + if (!cc)
> > + return -EINVAL;
> > + }
> > +
> > + /*
> > + * TODO: the IPU currently does not support the AYUV32 format,
> > + * so until it does convert to a supported YUV format.
> > + */
> > + if (cc->ipufmt && cc->cs == IPUV3_COLORSPACE_YUV) {
> > + u32 code;
> > +
> > + imx_media_enum_mbus_formats(&code, 0, PIXFMT_SEL_YUV);
> > + cc = imx_media_find_mbus_format(code, PIXFMT_SEL_YUV);
>
> Do we need a if (!cc) NULL check after this assignment?
In v3 of this series, this statement is only present in the IMX56 code path, which is unmodified compared to the original.
However, there's a missing check in the IMX78. I'm not sure if those can fail in practice, but for the sake of correctness, I rolled out an updated v4 series, where both checks are present. Message-id: 20211104113631.206899-1-dorota.czaplejewicz@puri.sm
Cheers,
Dorota
>
> > + }
> > +
> > + /*
> > + * The hardware can handle line lengths divisible by 4 bytes,
> > + * as long as the number of lines is even.
> > + * Otherwise, use the value of 8 bytes recommended in the datasheet.
> > + */
> > + divisor = 4 << (mbus->height % 2);
> > +
> > + width = round_up(mbus->width, divisor);
> > +
> > + if (cc->planar)
> > + stride = round_up(width, 16);
> > + else
> > + stride = round_up((width * cc->bpp) >> 3, divisor);
> > +
> > + pix->width = width;
> > + pix->height = mbus->height;
> > + pix->pixelformat = cc->fourcc;
> > + pix->colorspace = mbus->colorspace;
> > + pix->xfer_func = mbus->xfer_func;
> > + pix->ycbcr_enc = mbus->ycbcr_enc;
> > + pix->quantization = mbus->quantization;
> > + pix->field = mbus->field;
> > + pix->bytesperline = stride;
> > + pix->sizeimage = cc->planar ? ((stride * pix->height * cc->bpp) >> 3) :
> > + stride * pix->height;
> > +
> > + return 0;
> > +}
>
> regards,
> dan carpenter
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
[-- Attachment #2: Type: text/plain, Size: 176 bytes --]
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCHv2 1/4] media: imx: Remove unused functions
2021-10-17 11:08 ` Dorota Czaplejewicz
@ 2021-10-18 10:20 ` Philipp Zabel
-1 siblings, 0 replies; 20+ messages in thread
From: Philipp Zabel @ 2021-10-18 10:20 UTC (permalink / raw)
To: Dorota Czaplejewicz, Steve Longerbeam, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
On Sun, 2021-10-17 at 13:08 +0200, Dorota Czaplejewicz wrote:
> Neither imx_media_mbus_fmt_to_ipu_image nor imx_media_ipu_image_to_mbus_fmt
> were used anywhere.
>
> Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
> ---
> Hello,
>
> This patch series attempts to separate image format handling between devices in the i.MX5/6 and i.MX7/8 families.
>
> The first patch in the series implements the suggestion I received from Philipp Zabel as feedback to the previous series.
Thank you,
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
regards
Philipp
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCHv2 1/4] media: imx: Remove unused functions
@ 2021-10-18 10:20 ` Philipp Zabel
0 siblings, 0 replies; 20+ messages in thread
From: Philipp Zabel @ 2021-10-18 10:20 UTC (permalink / raw)
To: Dorota Czaplejewicz, Steve Longerbeam, Mauro Carvalho Chehab,
Greg Kroah-Hartman, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
linux-media, linux-staging, linux-arm-kernel, linux-kernel,
kernel, phone-devel
On Sun, 2021-10-17 at 13:08 +0200, Dorota Czaplejewicz wrote:
> Neither imx_media_mbus_fmt_to_ipu_image nor imx_media_ipu_image_to_mbus_fmt
> were used anywhere.
>
> Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
> ---
> Hello,
>
> This patch series attempts to separate image format handling between devices in the i.MX5/6 and i.MX7/8 families.
>
> The first patch in the series implements the suggestion I received from Philipp Zabel as feedback to the previous series.
Thank you,
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
regards
Philipp
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 20+ messages in thread