* [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes
@ 2025-12-02 7:51 Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 01/12] media: omap3isp: configure entity functions Hans Verkuil
` (12 more replies)
0 siblings, 13 replies; 16+ messages in thread
From: Hans Verkuil @ 2025-12-02 7:51 UTC (permalink / raw)
To: linux-media; +Cc: Sakari Ailus, laurent.pinchart
When I worked on the patch series to remove the vb2 wait_prepare/finish
callbacks, I had to test that series on my Beagle xM board with a
Leopard Imaging li5m03 camera.
Since I wanted to use v4l2-compliance to test the vb2 change, I first had
to fix a bunch of other compliance problems in this driver so it would
actually be able to run the streaming tests.
This series contains the fixes I made to get to that point.
It depends on one sensor driver fix (posted separately):
https://patchwork.linuxtv.org/project/linux-media/patch/554fb9d7-374b-4868-b91b-959b8fd69b4d@kernel.org/
This series doesn't fix all compliance problems, but at least it is
a lot better now.
Regards,
Hans
Changes since v2:
- restored the first patch ("configure entity functions") that I
accidentally dropped in v2.
Changes since v1:
- Simplify isp_video_enum_format by checking for duplicate pixelformats
- Drop -ENOTTY to -EINVAL change in isp_video_try_format.
Hans Verkuil (12):
media: omap3isp: configure entity functions
media: omap3isp: add V4L2_CAP_IO_MC and don't set bus_info
media: omap3isp: isp_video_mbus_to_pix/pix_to_mbus fixes
media: omap3isp: implement enum_fmt_vid_cap/out
media: omap3isp: use V4L2_COLORSPACE_SRGB instead of _JPEG
media: omap3isp: set initial format
media: omap3isp: rework isp_video_try/set_format
media: omap3isp: implement create/prepare_bufs
media: omap3isp: better VIDIOC_G/S_PARM handling
media: omap3isp: support ctrl events for isppreview
media: omap3isp: ispccp2: always clamp in ccp2_try_format()
media: omap3isp: isppreview: always clamp in preview_try_format()
drivers/media/platform/ti/omap3isp/ispccdc.c | 1 +
drivers/media/platform/ti/omap3isp/ispccp2.c | 3 +-
drivers/media/platform/ti/omap3isp/ispcsi2.c | 1 +
.../media/platform/ti/omap3isp/isppreview.c | 26 ++-
.../media/platform/ti/omap3isp/ispresizer.c | 3 +-
drivers/media/platform/ti/omap3isp/ispstat.c | 1 +
drivers/media/platform/ti/omap3isp/ispvideo.c | 178 +++++++++++++-----
7 files changed, 152 insertions(+), 61 deletions(-)
--
2.51.0
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCHv3 01/12] media: omap3isp: configure entity functions
2025-12-02 7:51 [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes Hans Verkuil
@ 2025-12-02 7:51 ` Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 02/12] media: omap3isp: add V4L2_CAP_IO_MC and don't set bus_info Hans Verkuil
` (11 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Hans Verkuil @ 2025-12-02 7:51 UTC (permalink / raw)
To: linux-media; +Cc: Sakari Ailus, laurent.pinchart, Hans Verkuil
For the various subdevices, set the function field.
This fixes v4l2-compliance errors:
$ v4l2-compliance -M0
v4l2-compliance 1.33.0-5410, 32 bits, 64-bit time_t
v4l2-compliance SHA: c12c89c5bd70 2025-10-05 09:58:42
Compliance test for omap3isp device /dev/media0:
Media Driver Info:
Driver name : omap3isp
Model : TI OMAP3 ISP
Serial :
Bus info : platform:480bc000.isp
Media version : 6.17.0
Hardware revision: 0x000000f0 (240)
Driver version : 6.17.0
Required ioctls:
test MEDIA_IOC_DEVICE_INFO: OK
test invalid ioctls: OK
Allow for multiple opens:
test second /dev/media0 open: OK
test MEDIA_IOC_DEVICE_INFO: OK
test for unlimited opens: OK
Media Controller ioctls:
fail: v4l2-test-media.cpp(108): function == MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN
fail: v4l2-test-media.cpp(196): checkFunction(ent.function, true)
test MEDIA_IOC_G_TOPOLOGY: FAIL
fail: v4l2-test-media.cpp(398): num_data_links != num_links
test MEDIA_IOC_ENUM_ENTITIES/LINKS: FAIL
test MEDIA_IOC_SETUP_LINK: OK
Total for omap3isp device /dev/media0: 8, Succeeded: 6, Failed: 2, Warnings: 0
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
---
drivers/media/platform/ti/omap3isp/ispccdc.c | 1 +
drivers/media/platform/ti/omap3isp/ispccp2.c | 1 +
drivers/media/platform/ti/omap3isp/ispcsi2.c | 1 +
drivers/media/platform/ti/omap3isp/isppreview.c | 1 +
drivers/media/platform/ti/omap3isp/ispresizer.c | 1 +
drivers/media/platform/ti/omap3isp/ispstat.c | 1 +
6 files changed, 6 insertions(+)
diff --git a/drivers/media/platform/ti/omap3isp/ispccdc.c b/drivers/media/platform/ti/omap3isp/ispccdc.c
index 55ee14e8b449..9dbf06ac058d 100644
--- a/drivers/media/platform/ti/omap3isp/ispccdc.c
+++ b/drivers/media/platform/ti/omap3isp/ispccdc.c
@@ -2675,6 +2675,7 @@ static int ccdc_init_entities(struct isp_ccdc_device *ccdc)
pads[CCDC_PAD_SOURCE_OF].flags = MEDIA_PAD_FL_SOURCE;
me->ops = &ccdc_media_ops;
+ me->function = MEDIA_ENT_F_PROC_VIDEO_PIXEL_ENC_CONV;
ret = media_entity_pads_init(me, CCDC_PADS_NUM, pads);
if (ret < 0)
return ret;
diff --git a/drivers/media/platform/ti/omap3isp/ispccp2.c b/drivers/media/platform/ti/omap3isp/ispccp2.c
index 1204ee221c9e..f4147c79639c 100644
--- a/drivers/media/platform/ti/omap3isp/ispccp2.c
+++ b/drivers/media/platform/ti/omap3isp/ispccp2.c
@@ -1086,6 +1086,7 @@ static int ccp2_init_entities(struct isp_ccp2_device *ccp2)
pads[CCP2_PAD_SOURCE].flags = MEDIA_PAD_FL_SOURCE;
me->ops = &ccp2_media_ops;
+ me->function = MEDIA_ENT_F_VID_IF_BRIDGE;
ret = media_entity_pads_init(me, CCP2_PADS_NUM, pads);
if (ret < 0)
return ret;
diff --git a/drivers/media/platform/ti/omap3isp/ispcsi2.c b/drivers/media/platform/ti/omap3isp/ispcsi2.c
index ae574e1b6528..f227042b61b6 100644
--- a/drivers/media/platform/ti/omap3isp/ispcsi2.c
+++ b/drivers/media/platform/ti/omap3isp/ispcsi2.c
@@ -1251,6 +1251,7 @@ static int csi2_init_entities(struct isp_csi2_device *csi2)
| MEDIA_PAD_FL_MUST_CONNECT;
me->ops = &csi2_media_ops;
+ me->function = MEDIA_ENT_F_VID_IF_BRIDGE;
ret = media_entity_pads_init(me, CSI2_PADS_NUM, pads);
if (ret < 0)
return ret;
diff --git a/drivers/media/platform/ti/omap3isp/isppreview.c b/drivers/media/platform/ti/omap3isp/isppreview.c
index e383a57654de..26f7167d1f4f 100644
--- a/drivers/media/platform/ti/omap3isp/isppreview.c
+++ b/drivers/media/platform/ti/omap3isp/isppreview.c
@@ -2294,6 +2294,7 @@ static int preview_init_entities(struct isp_prev_device *prev)
pads[PREV_PAD_SOURCE].flags = MEDIA_PAD_FL_SOURCE;
me->ops = &preview_media_ops;
+ me->function = MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER;
ret = media_entity_pads_init(me, PREV_PADS_NUM, pads);
if (ret < 0)
goto error_handler_free;
diff --git a/drivers/media/platform/ti/omap3isp/ispresizer.c b/drivers/media/platform/ti/omap3isp/ispresizer.c
index 87d821b02e5c..5dff48489394 100644
--- a/drivers/media/platform/ti/omap3isp/ispresizer.c
+++ b/drivers/media/platform/ti/omap3isp/ispresizer.c
@@ -1738,6 +1738,7 @@ static int resizer_init_entities(struct isp_res_device *res)
pads[RESZ_PAD_SOURCE].flags = MEDIA_PAD_FL_SOURCE;
me->ops = &resizer_media_ops;
+ me->function = MEDIA_ENT_F_PROC_VIDEO_SCALER;
ret = media_entity_pads_init(me, RESZ_PADS_NUM, pads);
if (ret < 0)
return ret;
diff --git a/drivers/media/platform/ti/omap3isp/ispstat.c b/drivers/media/platform/ti/omap3isp/ispstat.c
index 07bd62a93d99..64bc71d830c4 100644
--- a/drivers/media/platform/ti/omap3isp/ispstat.c
+++ b/drivers/media/platform/ti/omap3isp/ispstat.c
@@ -1037,6 +1037,7 @@ static int isp_stat_init_entities(struct ispstat *stat, const char *name,
stat->pad.flags = MEDIA_PAD_FL_SINK | MEDIA_PAD_FL_MUST_CONNECT;
me->ops = NULL;
+ me->function = MEDIA_ENT_F_PROC_VIDEO_STATISTICS;
return media_entity_pads_init(me, 1, &stat->pad);
}
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCHv3 02/12] media: omap3isp: add V4L2_CAP_IO_MC and don't set bus_info
2025-12-02 7:51 [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 01/12] media: omap3isp: configure entity functions Hans Verkuil
@ 2025-12-02 7:51 ` Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 03/12] media: omap3isp: isp_video_mbus_to_pix/pix_to_mbus fixes Hans Verkuil
` (10 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Hans Verkuil @ 2025-12-02 7:51 UTC (permalink / raw)
To: linux-media; +Cc: Sakari Ailus, laurent.pinchart, Hans Verkuil
Since this is a media-centric device set the V4L2_CAP_IO_MC
capability. Also don't set bus_info, leave that to the v4l2 core.
This fixes v4l2-compliance errors:
test MC information (see 'Media Driver Info' above): OK
fail: v4l2-compliance.cpp(661): missing bus_info prefix ('media')
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
---
drivers/media/platform/ti/omap3isp/ispvideo.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/drivers/media/platform/ti/omap3isp/ispvideo.c b/drivers/media/platform/ti/omap3isp/ispvideo.c
index 0e7f0bf2b346..46609045e2c8 100644
--- a/drivers/media/platform/ti/omap3isp/ispvideo.c
+++ b/drivers/media/platform/ti/omap3isp/ispvideo.c
@@ -645,11 +645,9 @@ isp_video_querycap(struct file *file, void *fh, struct v4l2_capability *cap)
strscpy(cap->driver, ISP_VIDEO_DRIVER_NAME, sizeof(cap->driver));
strscpy(cap->card, video->video.name, sizeof(cap->card));
- strscpy(cap->bus_info, "media", sizeof(cap->bus_info));
cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT
- | V4L2_CAP_STREAMING | V4L2_CAP_DEVICE_CAPS;
-
+ | V4L2_CAP_STREAMING | V4L2_CAP_DEVICE_CAPS | V4L2_CAP_IO_MC;
return 0;
}
@@ -1451,10 +1449,10 @@ int omap3isp_video_init(struct isp_video *video, const char *name)
video->video.ioctl_ops = &isp_video_ioctl_ops;
if (video->type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
video->video.device_caps = V4L2_CAP_VIDEO_CAPTURE
- | V4L2_CAP_STREAMING;
+ | V4L2_CAP_STREAMING | V4L2_CAP_IO_MC;
else
video->video.device_caps = V4L2_CAP_VIDEO_OUTPUT
- | V4L2_CAP_STREAMING;
+ | V4L2_CAP_STREAMING | V4L2_CAP_IO_MC;
video->pipe.stream_state = ISP_PIPELINE_STREAM_STOPPED;
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCHv3 03/12] media: omap3isp: isp_video_mbus_to_pix/pix_to_mbus fixes
2025-12-02 7:51 [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 01/12] media: omap3isp: configure entity functions Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 02/12] media: omap3isp: add V4L2_CAP_IO_MC and don't set bus_info Hans Verkuil
@ 2025-12-02 7:51 ` Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 04/12] media: omap3isp: implement enum_fmt_vid_cap/out Hans Verkuil
` (9 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Hans Verkuil @ 2025-12-02 7:51 UTC (permalink / raw)
To: linux-media; +Cc: Sakari Ailus, laurent.pinchart, Hans Verkuil
The isp_video_mbus_to_pix/pix_to_mbus functions did not take
the last empty entry { 0, } of the formats array into account.
As a result, isp_video_mbus_to_pix would accept code 0 and
isp_video_pix_to_mbus would select code 0 if no match was found.
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
---
drivers/media/platform/ti/omap3isp/ispvideo.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/media/platform/ti/omap3isp/ispvideo.c b/drivers/media/platform/ti/omap3isp/ispvideo.c
index 46609045e2c8..864d38140b87 100644
--- a/drivers/media/platform/ti/omap3isp/ispvideo.c
+++ b/drivers/media/platform/ti/omap3isp/ispvideo.c
@@ -148,12 +148,12 @@ static unsigned int isp_video_mbus_to_pix(const struct isp_video *video,
pix->width = mbus->width;
pix->height = mbus->height;
- for (i = 0; i < ARRAY_SIZE(formats); ++i) {
+ for (i = 0; i < ARRAY_SIZE(formats) - 1; ++i) {
if (formats[i].code == mbus->code)
break;
}
- if (WARN_ON(i == ARRAY_SIZE(formats)))
+ if (WARN_ON(i == ARRAY_SIZE(formats) - 1))
return 0;
min_bpl = pix->width * formats[i].bpp;
@@ -191,7 +191,7 @@ static void isp_video_pix_to_mbus(const struct v4l2_pix_format *pix,
/* Skip the last format in the loop so that it will be selected if no
* match is found.
*/
- for (i = 0; i < ARRAY_SIZE(formats) - 1; ++i) {
+ for (i = 0; i < ARRAY_SIZE(formats) - 2; ++i) {
if (formats[i].pixelformat == pix->pixelformat)
break;
}
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCHv3 04/12] media: omap3isp: implement enum_fmt_vid_cap/out
2025-12-02 7:51 [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes Hans Verkuil
` (2 preceding siblings ...)
2025-12-02 7:51 ` [PATCHv3 03/12] media: omap3isp: isp_video_mbus_to_pix/pix_to_mbus fixes Hans Verkuil
@ 2025-12-02 7:51 ` Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 05/12] media: omap3isp: use V4L2_COLORSPACE_SRGB instead of _JPEG Hans Verkuil
` (8 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Hans Verkuil @ 2025-12-02 7:51 UTC (permalink / raw)
To: linux-media; +Cc: Sakari Ailus, laurent.pinchart, Hans Verkuil
Add missing ioctls. This makes v4l2-compliance happier:
fail: v4l2-test-formats.cpp(516): pixelformat 59565955 (UYVY) for buftype 1 not reported by ENUM_FMT
test VIDIOC_G_FMT: FAIL
fail: v4l2-test-formats.cpp(516): pixelformat 59565955 (UYVY) for buftype 1 not reported by ENUM_FMT
test VIDIOC_TRY_FMT: FAIL
fail: v4l2-test-formats.cpp(516): pixelformat 56595559 (YUYV) for buftype 1 not reported by ENUM_FMT
test VIDIOC_S_FMT: FAIL
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
---
drivers/media/platform/ti/omap3isp/ispvideo.c | 39 +++++++++++++++++--
1 file changed, 36 insertions(+), 3 deletions(-)
diff --git a/drivers/media/platform/ti/omap3isp/ispvideo.c b/drivers/media/platform/ti/omap3isp/ispvideo.c
index 864d38140b87..5ce8736ca5bd 100644
--- a/drivers/media/platform/ti/omap3isp/ispvideo.c
+++ b/drivers/media/platform/ti/omap3isp/ispvideo.c
@@ -35,6 +35,10 @@
/*
* NOTE: When adding new media bus codes, always remember to add
* corresponding in-memory formats to the table below!!!
+ *
+ * If there are multiple entries with the same pixelformat but
+ * different media bus codes, then keep those together. Otherwise
+ * isp_video_enum_format() cannot detect duplicate pixelformats.
*/
static struct isp_format_info formats[] = {
{ MEDIA_BUS_FMT_Y8_1X8, MEDIA_BUS_FMT_Y8_1X8,
@@ -97,12 +101,12 @@ static struct isp_format_info formats[] = {
{ MEDIA_BUS_FMT_UYVY8_1X16, MEDIA_BUS_FMT_UYVY8_1X16,
MEDIA_BUS_FMT_UYVY8_1X16, 0,
V4L2_PIX_FMT_UYVY, 16, 2, },
- { MEDIA_BUS_FMT_YUYV8_1X16, MEDIA_BUS_FMT_YUYV8_1X16,
- MEDIA_BUS_FMT_YUYV8_1X16, 0,
- V4L2_PIX_FMT_YUYV, 16, 2, },
{ MEDIA_BUS_FMT_UYVY8_2X8, MEDIA_BUS_FMT_UYVY8_2X8,
MEDIA_BUS_FMT_UYVY8_2X8, 0,
V4L2_PIX_FMT_UYVY, 8, 2, },
+ { MEDIA_BUS_FMT_YUYV8_1X16, MEDIA_BUS_FMT_YUYV8_1X16,
+ MEDIA_BUS_FMT_YUYV8_1X16, 0,
+ V4L2_PIX_FMT_YUYV, 16, 2, },
{ MEDIA_BUS_FMT_YUYV8_2X8, MEDIA_BUS_FMT_YUYV8_2X8,
MEDIA_BUS_FMT_YUYV8_2X8, 0,
V4L2_PIX_FMT_YUYV, 8, 2, },
@@ -652,6 +656,33 @@ isp_video_querycap(struct file *file, void *fh, struct v4l2_capability *cap)
return 0;
}
+static int
+isp_video_enum_format(struct file *file, void *fh, struct v4l2_fmtdesc *f)
+{
+ struct isp_video *video = video_drvdata(file);
+ unsigned int i, j;
+
+ if (f->type != video->type)
+ return -EINVAL;
+
+ for (i = 0, j = 0; i < ARRAY_SIZE(formats); i++) {
+ /* Weed out duplicate pixelformats with different mbus codes */
+ if (!f->mbus_code && i &&
+ formats[i - 1].pixelformat == formats[i].pixelformat)
+ continue;
+ if (f->mbus_code && formats[i].code != f->mbus_code)
+ continue;
+
+ if (j == f->index) {
+ f->pixelformat = formats[i].pixelformat;
+ return 0;
+ }
+ j++;
+ }
+
+ return -EINVAL;
+}
+
static int
isp_video_get_format(struct file *file, void *fh, struct v4l2_format *format)
{
@@ -1258,9 +1289,11 @@ isp_video_s_input(struct file *file, void *fh, unsigned int input)
static const struct v4l2_ioctl_ops isp_video_ioctl_ops = {
.vidioc_querycap = isp_video_querycap,
+ .vidioc_enum_fmt_vid_cap = isp_video_enum_format,
.vidioc_g_fmt_vid_cap = isp_video_get_format,
.vidioc_s_fmt_vid_cap = isp_video_set_format,
.vidioc_try_fmt_vid_cap = isp_video_try_format,
+ .vidioc_enum_fmt_vid_out = isp_video_enum_format,
.vidioc_g_fmt_vid_out = isp_video_get_format,
.vidioc_s_fmt_vid_out = isp_video_set_format,
.vidioc_try_fmt_vid_out = isp_video_try_format,
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCHv3 05/12] media: omap3isp: use V4L2_COLORSPACE_SRGB instead of _JPEG
2025-12-02 7:51 [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes Hans Verkuil
` (3 preceding siblings ...)
2025-12-02 7:51 ` [PATCHv3 04/12] media: omap3isp: implement enum_fmt_vid_cap/out Hans Verkuil
@ 2025-12-02 7:51 ` Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 06/12] media: omap3isp: set initial format Hans Verkuil
` (7 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Hans Verkuil @ 2025-12-02 7:51 UTC (permalink / raw)
To: linux-media; +Cc: Sakari Ailus, laurent.pinchart, Hans Verkuil
JPEG colorspace should generally not be used unless it is actually
dealing with JPG data. This fixes v4l2-compliance errors:
fail: v4l2-test-formats.cpp(416): pixelformat != V4L2_PIX_FMT_JPEG && pixelformat != V4L2_PIX_FMT_MJPEG && colorspace == V4L2_COLORSPACE_JPEG
fail: v4l2-test-formats.cpp(521): testColorspace(!node->is_io_mc, pix.pixelformat, pix.colorspace, pix.ycbcr_enc, pix.quantization)
test VIDIOC_TRY_FMT: FAIL
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
---
drivers/media/platform/ti/omap3isp/isppreview.c | 2 +-
drivers/media/platform/ti/omap3isp/ispresizer.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/media/platform/ti/omap3isp/isppreview.c b/drivers/media/platform/ti/omap3isp/isppreview.c
index 26f7167d1f4f..9992db782870 100644
--- a/drivers/media/platform/ti/omap3isp/isppreview.c
+++ b/drivers/media/platform/ti/omap3isp/isppreview.c
@@ -1796,7 +1796,7 @@ static void preview_try_format(struct isp_prev_device *prev,
fmt->width = crop->width;
fmt->height = crop->height;
- fmt->colorspace = V4L2_COLORSPACE_JPEG;
+ fmt->colorspace = V4L2_COLORSPACE_SRGB;
break;
}
diff --git a/drivers/media/platform/ti/omap3isp/ispresizer.c b/drivers/media/platform/ti/omap3isp/ispresizer.c
index 5dff48489394..ad0127f5b5cb 100644
--- a/drivers/media/platform/ti/omap3isp/ispresizer.c
+++ b/drivers/media/platform/ti/omap3isp/ispresizer.c
@@ -1405,7 +1405,7 @@ static void resizer_try_format(struct isp_res_device *res,
break;
}
- fmt->colorspace = V4L2_COLORSPACE_JPEG;
+ fmt->colorspace = V4L2_COLORSPACE_SRGB;
fmt->field = V4L2_FIELD_NONE;
}
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCHv3 06/12] media: omap3isp: set initial format
2025-12-02 7:51 [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes Hans Verkuil
` (4 preceding siblings ...)
2025-12-02 7:51 ` [PATCHv3 05/12] media: omap3isp: use V4L2_COLORSPACE_SRGB instead of _JPEG Hans Verkuil
@ 2025-12-02 7:51 ` Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 07/12] media: omap3isp: rework isp_video_try/set_format Hans Verkuil
` (6 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Hans Verkuil @ 2025-12-02 7:51 UTC (permalink / raw)
To: linux-media; +Cc: Sakari Ailus, laurent.pinchart, Hans Verkuil
Initialize the v4l2_format to a default. Empty formats are
not allowed in V4L2, so this fixes v4l2-compliance issues:
fail: v4l2-test-formats.cpp(514): !pix.width || !pix.height
test VIDIOC_G_FMT: FAIL
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
---
drivers/media/platform/ti/omap3isp/ispvideo.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/media/platform/ti/omap3isp/ispvideo.c b/drivers/media/platform/ti/omap3isp/ispvideo.c
index 5ce8736ca5bd..c52312b39598 100644
--- a/drivers/media/platform/ti/omap3isp/ispvideo.c
+++ b/drivers/media/platform/ti/omap3isp/ispvideo.c
@@ -1319,6 +1319,7 @@ static const struct v4l2_ioctl_ops isp_video_ioctl_ops = {
static int isp_video_open(struct file *file)
{
struct isp_video *video = video_drvdata(file);
+ struct v4l2_mbus_framefmt fmt;
struct isp_video_fh *handle;
struct vb2_queue *queue;
int ret = 0;
@@ -1361,6 +1362,13 @@ static int isp_video_open(struct file *file)
memset(&handle->format, 0, sizeof(handle->format));
handle->format.type = video->type;
+ handle->format.fmt.pix.width = 720;
+ handle->format.fmt.pix.height = 480;
+ handle->format.fmt.pix.pixelformat = V4L2_PIX_FMT_UYVY;
+ handle->format.fmt.pix.field = V4L2_FIELD_NONE;
+ handle->format.fmt.pix.colorspace = V4L2_COLORSPACE_SRGB;
+ isp_video_pix_to_mbus(&handle->format.fmt.pix, &fmt);
+ isp_video_mbus_to_pix(video, &fmt, &handle->format.fmt.pix);
handle->timeperframe.denominator = 1;
handle->video = video;
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCHv3 07/12] media: omap3isp: rework isp_video_try/set_format
2025-12-02 7:51 [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes Hans Verkuil
` (5 preceding siblings ...)
2025-12-02 7:51 ` [PATCHv3 06/12] media: omap3isp: set initial format Hans Verkuil
@ 2025-12-02 7:51 ` Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 08/12] media: omap3isp: implement create/prepare_bufs Hans Verkuil
` (5 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Hans Verkuil @ 2025-12-02 7:51 UTC (permalink / raw)
To: linux-media; +Cc: Sakari Ailus, laurent.pinchart, Hans Verkuil
isp_video_set_format now calls isp_video_try_format first, ensuring
consistent behavior and removing duplicate code in both functions.
This fixes an v4l2-compliance error:
fail: v4l2-test-formats.cpp(519): !pix.sizeimage
test VIDIOC_S_FMT: FAIL
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
---
drivers/media/platform/ti/omap3isp/ispvideo.c | 59 ++++++++++---------
1 file changed, 30 insertions(+), 29 deletions(-)
diff --git a/drivers/media/platform/ti/omap3isp/ispvideo.c b/drivers/media/platform/ti/omap3isp/ispvideo.c
index c52312b39598..adea39b6d930 100644
--- a/drivers/media/platform/ti/omap3isp/ispvideo.c
+++ b/drivers/media/platform/ti/omap3isp/ispvideo.c
@@ -700,11 +700,15 @@ isp_video_get_format(struct file *file, void *fh, struct v4l2_format *format)
}
static int
-isp_video_set_format(struct file *file, void *fh, struct v4l2_format *format)
+isp_video_try_format(struct file *file, void *fh, struct v4l2_format *format)
{
- struct isp_video_fh *vfh = file_to_isp_video_fh(file);
struct isp_video *video = video_drvdata(file);
- struct v4l2_mbus_framefmt fmt;
+ struct v4l2_subdev_format fmt = {
+ .which = V4L2_SUBDEV_FORMAT_ACTIVE,
+ };
+ struct v4l2_subdev *subdev;
+ u32 pad;
+ int ret;
if (format->type != video->type)
return -EINVAL;
@@ -744,32 +748,11 @@ isp_video_set_format(struct file *file, void *fh, struct v4l2_format *format)
break;
}
- /* Fill the bytesperline and sizeimage fields by converting to media bus
- * format and back to pixel format.
- */
- isp_video_pix_to_mbus(&format->fmt.pix, &fmt);
- isp_video_mbus_to_pix(video, &fmt, &format->fmt.pix);
-
- mutex_lock(&video->mutex);
- vfh->format = *format;
- mutex_unlock(&video->mutex);
-
- return 0;
-}
-
-static int
-isp_video_try_format(struct file *file, void *fh, struct v4l2_format *format)
-{
- struct isp_video *video = video_drvdata(file);
- struct v4l2_subdev_format fmt = {
- .which = V4L2_SUBDEV_FORMAT_ACTIVE,
- };
- struct v4l2_subdev *subdev;
- u32 pad;
- int ret;
-
- if (format->type != video->type)
- return -EINVAL;
+ if (video->type == V4L2_BUF_TYPE_VIDEO_OUTPUT) {
+ isp_video_pix_to_mbus(&format->fmt.pix, &fmt.format);
+ isp_video_mbus_to_pix(video, &fmt.format, &format->fmt.pix);
+ return 0;
+ }
subdev = isp_video_remote_subdev(video, &pad);
if (subdev == NULL)
@@ -786,6 +769,24 @@ isp_video_try_format(struct file *file, void *fh, struct v4l2_format *format)
return 0;
}
+static int
+isp_video_set_format(struct file *file, void *fh, struct v4l2_format *format)
+{
+ struct isp_video_fh *vfh = file_to_isp_video_fh(file);
+ struct isp_video *video = video_drvdata(file);
+ int ret;
+
+ ret = isp_video_try_format(file, fh, format);
+ if (ret)
+ return ret;
+
+ mutex_lock(&video->mutex);
+ vfh->format = *format;
+ mutex_unlock(&video->mutex);
+
+ return 0;
+}
+
static int
isp_video_get_selection(struct file *file, void *fh, struct v4l2_selection *sel)
{
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCHv3 08/12] media: omap3isp: implement create/prepare_bufs
2025-12-02 7:51 [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes Hans Verkuil
` (6 preceding siblings ...)
2025-12-02 7:51 ` [PATCHv3 07/12] media: omap3isp: rework isp_video_try/set_format Hans Verkuil
@ 2025-12-02 7:51 ` Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 09/12] media: omap3isp: better VIDIOC_G/S_PARM handling Hans Verkuil
` (4 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Hans Verkuil @ 2025-12-02 7:51 UTC (permalink / raw)
To: linux-media; +Cc: Sakari Ailus, laurent.pinchart, Hans Verkuil
Add missing ioctls. This makes v4l2-compliance happier:
warn: v4l2-test-buffers.cpp(813): VIDIOC_CREATE_BUFS not supported
test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
---
drivers/media/platform/ti/omap3isp/ispvideo.c | 47 ++++++++++++++++++-
1 file changed, 45 insertions(+), 2 deletions(-)
diff --git a/drivers/media/platform/ti/omap3isp/ispvideo.c b/drivers/media/platform/ti/omap3isp/ispvideo.c
index adea39b6d930..ac170ef4fa01 100644
--- a/drivers/media/platform/ti/omap3isp/ispvideo.c
+++ b/drivers/media/platform/ti/omap3isp/ispvideo.c
@@ -329,6 +329,13 @@ static int isp_video_queue_setup(struct vb2_queue *queue,
struct isp_video_fh *vfh = vb2_get_drv_priv(queue);
struct isp_video *video = vfh->video;
+ if (*num_planes) {
+ if (*num_planes != 1)
+ return -EINVAL;
+ if (sizes[0] < vfh->format.fmt.pix.sizeimage)
+ return -EINVAL;
+ return 0;
+ }
*num_planes = 1;
sizes[0] = vfh->format.fmt.pix.sizeimage;
@@ -344,6 +351,7 @@ static int isp_video_buffer_prepare(struct vb2_buffer *buf)
{
struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(buf);
struct isp_video_fh *vfh = vb2_get_drv_priv(buf->vb2_queue);
+ unsigned int size = vfh->format.fmt.pix.sizeimage;
struct isp_buffer *buffer = to_isp_buffer(vbuf);
struct isp_video *video = vfh->video;
dma_addr_t addr;
@@ -364,8 +372,13 @@ static int isp_video_buffer_prepare(struct vb2_buffer *buf)
return -EINVAL;
}
- vb2_set_plane_payload(&buffer->vb.vb2_buf, 0,
- vfh->format.fmt.pix.sizeimage);
+ if (vb2_plane_size(&buffer->vb.vb2_buf, 0) < size) {
+ dev_dbg(video->isp->dev,
+ "data will not fit into plane (%lu < %u)\n",
+ vb2_plane_size(&buffer->vb.vb2_buf, 0), size);
+ return -EINVAL;
+ }
+ vb2_set_plane_payload(&buffer->vb.vb2_buf, 0, size);
buffer->dma = addr;
return 0;
@@ -935,6 +948,20 @@ isp_video_reqbufs(struct file *file, void *fh, struct v4l2_requestbuffers *rb)
return ret;
}
+static int
+isp_video_create_bufs(struct file *file, void *fh, struct v4l2_create_buffers *p)
+{
+ struct isp_video_fh *vfh = file_to_isp_video_fh(file);
+ struct isp_video *video = video_drvdata(file);
+ int ret;
+
+ mutex_lock(&video->queue_lock);
+ ret = vb2_create_bufs(&vfh->queue, p);
+ mutex_unlock(&video->queue_lock);
+
+ return ret;
+}
+
static int
isp_video_querybuf(struct file *file, void *fh, struct v4l2_buffer *b)
{
@@ -949,6 +976,20 @@ isp_video_querybuf(struct file *file, void *fh, struct v4l2_buffer *b)
return ret;
}
+static int
+isp_video_prepare_buf(struct file *file, void *fh, struct v4l2_buffer *b)
+{
+ struct isp_video_fh *vfh = file_to_isp_video_fh(file);
+ struct isp_video *video = video_drvdata(file);
+ int ret;
+
+ mutex_lock(&video->queue_lock);
+ ret = vb2_prepare_buf(&vfh->queue, video->video.v4l2_dev->mdev, b);
+ mutex_unlock(&video->queue_lock);
+
+ return ret;
+}
+
static int
isp_video_qbuf(struct file *file, void *fh, struct v4l2_buffer *b)
{
@@ -1303,7 +1344,9 @@ static const struct v4l2_ioctl_ops isp_video_ioctl_ops = {
.vidioc_g_parm = isp_video_get_param,
.vidioc_s_parm = isp_video_set_param,
.vidioc_reqbufs = isp_video_reqbufs,
+ .vidioc_create_bufs = isp_video_create_bufs,
.vidioc_querybuf = isp_video_querybuf,
+ .vidioc_prepare_buf = isp_video_prepare_buf,
.vidioc_qbuf = isp_video_qbuf,
.vidioc_dqbuf = isp_video_dqbuf,
.vidioc_streamon = isp_video_streamon,
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCHv3 09/12] media: omap3isp: better VIDIOC_G/S_PARM handling
2025-12-02 7:51 [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes Hans Verkuil
` (7 preceding siblings ...)
2025-12-02 7:51 ` [PATCHv3 08/12] media: omap3isp: implement create/prepare_bufs Hans Verkuil
@ 2025-12-02 7:51 ` Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 10/12] media: omap3isp: support ctrl events for isppreview Hans Verkuil
` (3 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Hans Verkuil @ 2025-12-02 7:51 UTC (permalink / raw)
To: linux-media; +Cc: Sakari Ailus, laurent.pinchart, Hans Verkuil
Fix various v4l2-compliance errors relating to timeperframe.
VIDIOC_G/S_PARM is only supported for Video Output, so disable
these ioctls for Capture devices.
Ensure numerator and denominator are never 0.
Set missing V4L2_CAP_TIMEPERFRAME capability for VIDIOC_S_PARM.
v4l2-compliance:
fail: v4l2-test-formats.cpp(1388): out->timeperframe.numerator == 0 || out->timeperframe.denominator == 0
test VIDIOC_G/S_PARM: FAIL
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
---
drivers/media/platform/ti/omap3isp/ispvideo.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/media/platform/ti/omap3isp/ispvideo.c b/drivers/media/platform/ti/omap3isp/ispvideo.c
index ac170ef4fa01..86cb27b6ca4e 100644
--- a/drivers/media/platform/ti/omap3isp/ispvideo.c
+++ b/drivers/media/platform/ti/omap3isp/ispvideo.c
@@ -928,7 +928,10 @@ isp_video_set_param(struct file *file, void *fh, struct v4l2_streamparm *a)
if (a->parm.output.timeperframe.denominator == 0)
a->parm.output.timeperframe.denominator = 1;
+ if (a->parm.output.timeperframe.numerator == 0)
+ a->parm.output.timeperframe.numerator = 1;
+ a->parm.output.capability = V4L2_CAP_TIMEPERFRAME;
vfh->timeperframe = a->parm.output.timeperframe;
return 0;
@@ -1413,6 +1416,7 @@ static int isp_video_open(struct file *file)
handle->format.fmt.pix.colorspace = V4L2_COLORSPACE_SRGB;
isp_video_pix_to_mbus(&handle->format.fmt.pix, &fmt);
isp_video_mbus_to_pix(video, &fmt, &handle->format.fmt.pix);
+ handle->timeperframe.numerator = 1;
handle->timeperframe.denominator = 1;
handle->video = video;
@@ -1532,12 +1536,15 @@ int omap3isp_video_init(struct isp_video *video, const char *name)
video->video.vfl_type = VFL_TYPE_VIDEO;
video->video.release = video_device_release_empty;
video->video.ioctl_ops = &isp_video_ioctl_ops;
- if (video->type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
+ if (video->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) {
video->video.device_caps = V4L2_CAP_VIDEO_CAPTURE
| V4L2_CAP_STREAMING | V4L2_CAP_IO_MC;
- else
+ v4l2_disable_ioctl(&video->video, VIDIOC_S_PARM);
+ v4l2_disable_ioctl(&video->video, VIDIOC_G_PARM);
+ } else {
video->video.device_caps = V4L2_CAP_VIDEO_OUTPUT
| V4L2_CAP_STREAMING | V4L2_CAP_IO_MC;
+ }
video->pipe.stream_state = ISP_PIPELINE_STREAM_STOPPED;
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCHv3 10/12] media: omap3isp: support ctrl events for isppreview
2025-12-02 7:51 [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes Hans Verkuil
` (8 preceding siblings ...)
2025-12-02 7:51 ` [PATCHv3 09/12] media: omap3isp: better VIDIOC_G/S_PARM handling Hans Verkuil
@ 2025-12-02 7:51 ` Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 11/12] media: omap3isp: ispccp2: always clamp in ccp2_try_format() Hans Verkuil
` (2 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Hans Verkuil @ 2025-12-02 7:51 UTC (permalink / raw)
To: linux-media; +Cc: Sakari Ailus, laurent.pinchart, Hans Verkuil
The preview subdev device was missing V4L2_SUBDEV_FL_HAS_EVENTS,
and that prevented VIDIOC_SUBSCRIBE_EVENT from working.
Fixes a v4l2-compliance error:
fail: v4l2-test-controls.cpp(1128): subscribe event for control 'User Controls' failed
test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: FAIL
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
---
drivers/media/platform/ti/omap3isp/isppreview.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/media/platform/ti/omap3isp/isppreview.c b/drivers/media/platform/ti/omap3isp/isppreview.c
index 9992db782870..3e9e213c6d8a 100644
--- a/drivers/media/platform/ti/omap3isp/isppreview.c
+++ b/drivers/media/platform/ti/omap3isp/isppreview.c
@@ -2277,7 +2277,7 @@ static int preview_init_entities(struct isp_prev_device *prev)
strscpy(sd->name, "OMAP3 ISP preview", sizeof(sd->name));
sd->grp_id = 1 << 16; /* group ID for isp subdevs */
v4l2_set_subdevdata(sd, prev);
- sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
+ sd->flags |= V4L2_SUBDEV_FL_HAS_EVENTS | V4L2_SUBDEV_FL_HAS_DEVNODE;
v4l2_ctrl_handler_init(&prev->ctrls, 2);
v4l2_ctrl_new_std(&prev->ctrls, &preview_ctrl_ops, V4L2_CID_BRIGHTNESS,
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCHv3 11/12] media: omap3isp: ispccp2: always clamp in ccp2_try_format()
2025-12-02 7:51 [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes Hans Verkuil
` (9 preceding siblings ...)
2025-12-02 7:51 ` [PATCHv3 10/12] media: omap3isp: support ctrl events for isppreview Hans Verkuil
@ 2025-12-02 7:51 ` Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 12/12] media: omap3isp: isppreview: always clamp in preview_try_format() Hans Verkuil
2025-12-19 12:34 ` [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes Sakari Ailus
12 siblings, 0 replies; 16+ messages in thread
From: Hans Verkuil @ 2025-12-02 7:51 UTC (permalink / raw)
To: linux-media; +Cc: Sakari Ailus, laurent.pinchart, Hans Verkuil
If ccp2->input == CCP2_INPUT_NONE, then try_format didn't clamp
the width and height. This can happen with v4l2-compliance tests.
Always clamp.
This fixes this v4l2-compliance error:
fail: v4l2-test-subdevs.cpp(171): fse.max_width == ~0U || fse.max_height == ~0U
fail: v4l2-test-subdevs.cpp(270): ret && ret != ENOTTY
test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: FAIL
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
---
drivers/media/platform/ti/omap3isp/ispccp2.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/media/platform/ti/omap3isp/ispccp2.c b/drivers/media/platform/ti/omap3isp/ispccp2.c
index f4147c79639c..d668111b44f4 100644
--- a/drivers/media/platform/ti/omap3isp/ispccp2.c
+++ b/drivers/media/platform/ti/omap3isp/ispccp2.c
@@ -658,7 +658,7 @@ static void ccp2_try_format(struct isp_ccp2_device *ccp2,
fmt->height = clamp_t(u32, fmt->height,
ISPCCP2_DAT_SIZE_MIN,
ISPCCP2_DAT_SIZE_MAX);
- } else if (ccp2->input == CCP2_INPUT_MEMORY) {
+ } else {
fmt->width = clamp_t(u32, fmt->width,
ISPCCP2_LCM_HSIZE_COUNT_MIN,
ISPCCP2_LCM_HSIZE_COUNT_MAX);
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCHv3 12/12] media: omap3isp: isppreview: always clamp in preview_try_format()
2025-12-02 7:51 [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes Hans Verkuil
` (10 preceding siblings ...)
2025-12-02 7:51 ` [PATCHv3 11/12] media: omap3isp: ispccp2: always clamp in ccp2_try_format() Hans Verkuil
@ 2025-12-02 7:51 ` Hans Verkuil
2025-12-19 12:34 ` [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes Sakari Ailus
12 siblings, 0 replies; 16+ messages in thread
From: Hans Verkuil @ 2025-12-02 7:51 UTC (permalink / raw)
To: linux-media; +Cc: Sakari Ailus, laurent.pinchart, Hans Verkuil
If prev->input != PREVIEW_INPUT_MEMORY the width and height weren't
clamped. Just always clamp.
This fixes a v4l2-compliance error:
fail: v4l2-test-subdevs.cpp(171): fse.max_width == ~0U || fse.max_height == ~0U
fail: v4l2-test-subdevs.cpp(270): ret && ret != ENOTTY
test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: FAIL
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
---
.../media/platform/ti/omap3isp/isppreview.c | 21 +++++++------------
1 file changed, 8 insertions(+), 13 deletions(-)
diff --git a/drivers/media/platform/ti/omap3isp/isppreview.c b/drivers/media/platform/ti/omap3isp/isppreview.c
index 3e9e213c6d8a..3f3b5bd9cdc7 100644
--- a/drivers/media/platform/ti/omap3isp/isppreview.c
+++ b/drivers/media/platform/ti/omap3isp/isppreview.c
@@ -1742,22 +1742,17 @@ static void preview_try_format(struct isp_prev_device *prev,
switch (pad) {
case PREV_PAD_SINK:
- /* When reading data from the CCDC, the input size has already
- * been mangled by the CCDC output pad so it can be accepted
- * as-is.
- *
- * When reading data from memory, clamp the requested width and
- * height. The TRM doesn't specify a minimum input height, make
+ /*
+ * Clamp the requested width and height.
+ * The TRM doesn't specify a minimum input height, make
* sure we got enough lines to enable the noise filter and color
* filter array interpolation.
*/
- if (prev->input == PREVIEW_INPUT_MEMORY) {
- fmt->width = clamp_t(u32, fmt->width, PREV_MIN_IN_WIDTH,
- preview_max_out_width(prev));
- fmt->height = clamp_t(u32, fmt->height,
- PREV_MIN_IN_HEIGHT,
- PREV_MAX_IN_HEIGHT);
- }
+ fmt->width = clamp_t(u32, fmt->width, PREV_MIN_IN_WIDTH,
+ preview_max_out_width(prev));
+ fmt->height = clamp_t(u32, fmt->height,
+ PREV_MIN_IN_HEIGHT,
+ PREV_MAX_IN_HEIGHT);
fmt->colorspace = V4L2_COLORSPACE_SRGB;
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes
2025-12-02 7:51 [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes Hans Verkuil
` (11 preceding siblings ...)
2025-12-02 7:51 ` [PATCHv3 12/12] media: omap3isp: isppreview: always clamp in preview_try_format() Hans Verkuil
@ 2025-12-19 12:34 ` Sakari Ailus
2026-01-06 7:20 ` Hans Verkuil
12 siblings, 1 reply; 16+ messages in thread
From: Sakari Ailus @ 2025-12-19 12:34 UTC (permalink / raw)
To: Hans Verkuil; +Cc: linux-media, laurent.pinchart
Hi Hans,
On Tue, Dec 02, 2025 at 08:51:08AM +0100, Hans Verkuil wrote:
> When I worked on the patch series to remove the vb2 wait_prepare/finish
> callbacks, I had to test that series on my Beagle xM board with a
> Leopard Imaging li5m03 camera.
>
> Since I wanted to use v4l2-compliance to test the vb2 change, I first had
> to fix a bunch of other compliance problems in this driver so it would
> actually be able to run the streaming tests.
>
> This series contains the fixes I made to get to that point.
>
> It depends on one sensor driver fix (posted separately):
>
> https://patchwork.linuxtv.org/project/linux-media/patch/554fb9d7-374b-4868-b91b-959b8fd69b4d@kernel.org/
>
> This series doesn't fix all compliance problems, but at least it is
> a lot better now.
Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Also let me know if you'd wish me to pick these.
--
Kind regards,
Sakari Ailus
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes
2025-12-19 12:34 ` [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes Sakari Ailus
@ 2026-01-06 7:20 ` Hans Verkuil
2026-01-07 21:33 ` Sakari Ailus
0 siblings, 1 reply; 16+ messages in thread
From: Hans Verkuil @ 2026-01-06 7:20 UTC (permalink / raw)
To: Sakari Ailus; +Cc: linux-media, laurent.pinchart
On 19/12/2025 13:34, Sakari Ailus wrote:
> Hi Hans,
>
> On Tue, Dec 02, 2025 at 08:51:08AM +0100, Hans Verkuil wrote:
>> When I worked on the patch series to remove the vb2 wait_prepare/finish
>> callbacks, I had to test that series on my Beagle xM board with a
>> Leopard Imaging li5m03 camera.
>>
>> Since I wanted to use v4l2-compliance to test the vb2 change, I first had
>> to fix a bunch of other compliance problems in this driver so it would
>> actually be able to run the streaming tests.
>>
>> This series contains the fixes I made to get to that point.
>>
>> It depends on one sensor driver fix (posted separately):
>>
>> https://patchwork.linuxtv.org/project/linux-media/patch/554fb9d7-374b-4868-b91b-959b8fd69b4d@kernel.org/
>>
>> This series doesn't fix all compliance problems, but at least it is
>> a lot better now.
>
> Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
>
> Also let me know if you'd wish me to pick these.
>
I can take this series and add your Ack.
Thank you for looking at this!
Regards,
Hans
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes
2026-01-06 7:20 ` Hans Verkuil
@ 2026-01-07 21:33 ` Sakari Ailus
0 siblings, 0 replies; 16+ messages in thread
From: Sakari Ailus @ 2026-01-07 21:33 UTC (permalink / raw)
To: Hans Verkuil; +Cc: linux-media, laurent.pinchart
On Tue, Jan 06, 2026 at 08:20:28AM +0100, Hans Verkuil wrote:
> On 19/12/2025 13:34, Sakari Ailus wrote:
> > Hi Hans,
> >
> > On Tue, Dec 02, 2025 at 08:51:08AM +0100, Hans Verkuil wrote:
> >> When I worked on the patch series to remove the vb2 wait_prepare/finish
> >> callbacks, I had to test that series on my Beagle xM board with a
> >> Leopard Imaging li5m03 camera.
> >>
> >> Since I wanted to use v4l2-compliance to test the vb2 change, I first had
> >> to fix a bunch of other compliance problems in this driver so it would
> >> actually be able to run the streaming tests.
> >>
> >> This series contains the fixes I made to get to that point.
> >>
> >> It depends on one sensor driver fix (posted separately):
> >>
> >> https://patchwork.linuxtv.org/project/linux-media/patch/554fb9d7-374b-4868-b91b-959b8fd69b4d@kernel.org/
> >>
> >> This series doesn't fix all compliance problems, but at least it is
> >> a lot better now.
> >
> > Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> >
> > Also let me know if you'd wish me to pick these.
> >
>
> I can take this series and add your Ack.
>
> Thank you for looking at this!
Sure, thanks!
--
Sakari Ailus
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2026-01-07 21:33 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-02 7:51 [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 01/12] media: omap3isp: configure entity functions Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 02/12] media: omap3isp: add V4L2_CAP_IO_MC and don't set bus_info Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 03/12] media: omap3isp: isp_video_mbus_to_pix/pix_to_mbus fixes Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 04/12] media: omap3isp: implement enum_fmt_vid_cap/out Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 05/12] media: omap3isp: use V4L2_COLORSPACE_SRGB instead of _JPEG Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 06/12] media: omap3isp: set initial format Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 07/12] media: omap3isp: rework isp_video_try/set_format Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 08/12] media: omap3isp: implement create/prepare_bufs Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 09/12] media: omap3isp: better VIDIOC_G/S_PARM handling Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 10/12] media: omap3isp: support ctrl events for isppreview Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 11/12] media: omap3isp: ispccp2: always clamp in ccp2_try_format() Hans Verkuil
2025-12-02 7:51 ` [PATCHv3 12/12] media: omap3isp: isppreview: always clamp in preview_try_format() Hans Verkuil
2025-12-19 12:34 ` [PATCHv3 00/12] media: omap3isp: v4l2-compliance fixes Sakari Ailus
2026-01-06 7:20 ` Hans Verkuil
2026-01-07 21:33 ` Sakari Ailus
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox