* Re: Re: [RFC v1 05/11] dt-bindings: media: Add nxp neoisp support
[not found] ` <f6d4c62f-cf7f-44ef-86f8-ca496e7c8a7b@kernel.org>
@ 2026-02-16 13:16 ` Antoine Bouyer
2026-02-16 13:38 ` Krzysztof Kozlowski
0 siblings, 1 reply; 14+ messages in thread
From: Antoine Bouyer @ 2026-02-16 13:16 UTC (permalink / raw)
To: Krzysztof Kozlowski, julien.vuillaumier, alexi.birlinger,
daniel.baluta, peng.fan, frank.li, jacopo.mondi, laurent.pinchart,
mchehab, robh, krzk+dt, conor+dt, shawnguo, s.hauer, kernel,
festevam
Cc: linux-kernel, linux-media, devicetree, linux-arm-kernel
Hi Krzysztof
On 2/5/26 10:43 AM, Krzysztof Kozlowski wrote:
> On 23/01/2026 09:09, Antoine Bouyer wrote:
>> Add dt-bindings for NXP neoisp module.
>
> What is a neoisp module?
This is Image Signal Processing IP from NXP.
Indeed my commit msg was not well documented sorry :( Will add more info
in future patchset.
>
>
>>
>> Signed-off-by: Antoine Bouyer <antoine.bouyer@nxp.com>
>> ---
>> .../devicetree/bindings/media/nxp,neoisp.yaml | 65 +++++++++++++++++++
>> 1 file changed, 65 insertions(+)
>> create mode 100644 Documentation/devicetree/bindings/media/nxp,neoisp.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/media/nxp,neoisp.yaml b/Documentation/devicetree/bindings/media/nxp,neoisp.yaml
>> new file mode 100644
>> index 000000000000..4dc9fa5a03b7
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/media/nxp,neoisp.yaml
>> @@ -0,0 +1,65 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/media/nxp,neoisp.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: NXP NEOISP Image Signal Processing Pipeline
>> +
>> +maintainers:
>> + - Antoine Bouyer <antoine.bouyer@nxp.com>
>> +
>> +description:
>> + The NXP NEOISP performs a set of image processing tasks on the RAW camera
>> + stream and provides RGB or YUV enhanced image.
>> +
>> +properties:
>> + compatible:
>> + enum:
>> + - nxp,neoisp
>
> Please read writing bindings document.
>
>> + - nxp,imx95-a0-neoisp
>> + - nxp,imx95-a1-neoisp
>> + - nxp,imx95-b0-neoisp
>
> Nothing explains me why one SoC has three neoisp. You have entire commit
> msg to explain weird things.
Actually, there are 2 ISP versions (v1, v2), and 3 i.MX95 versions a0,
a1 and b0. ISP v1 is integrated into i.MX95 a0 and a1 versions, while
ISP v2 is integrated into i.MX95 b0 only. v2 has some HW changes/fixes
compared to v1 which are handled in the driver.
I kept exact SoC name in neo compatibles to avoid confusion.
However, since a0 and a1 are not targeted for production, but only b0, I
will keep only one compatible: "nxp,imx95-neoisp". Will use same as file
name.
>
>> +
>> + reg:
>> + items:
>> + - description: The configuration registers
>> + - description: ISP local memories
>> +
>> + interrupts:
>> + maxItems: 1
>> +
>> + clocks:
>> + minItems: 1
>
> maxItems. There is no such syntax like you wrote. Look at other code in
> case of doubts.
Ok, I looked into other bindings before submitting of course, but missed
it sorry. Will take care of it in next patchset.
BR
Antoine
>
>
>> +
>> + clock-names:
>> + items:
>> + - const: camcm0
>> +
>> + power-domains:
>> + maxItems: 1
>> +
> Best regards,
> Krzysztof
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [RFC v1 05/11] dt-bindings: media: Add nxp neoisp support
2026-02-16 13:16 ` Re: [RFC v1 05/11] dt-bindings: media: Add nxp neoisp support Antoine Bouyer
@ 2026-02-16 13:38 ` Krzysztof Kozlowski
0 siblings, 0 replies; 14+ messages in thread
From: Krzysztof Kozlowski @ 2026-02-16 13:38 UTC (permalink / raw)
To: Antoine Bouyer, julien.vuillaumier, alexi.birlinger,
daniel.baluta, peng.fan, frank.li, jacopo.mondi, laurent.pinchart,
mchehab, robh, krzk+dt, conor+dt, shawnguo, s.hauer, kernel,
festevam
Cc: linux-kernel, linux-media, devicetree, linux-arm-kernel
On 16/02/2026 14:16, Antoine Bouyer wrote:
>>
>>> + - nxp,imx95-a0-neoisp
>>> + - nxp,imx95-a1-neoisp
>>> + - nxp,imx95-b0-neoisp
>>
>> Nothing explains me why one SoC has three neoisp. You have entire commit
>> msg to explain weird things.
>
> Actually, there are 2 ISP versions (v1, v2), and 3 i.MX95 versions a0,
> a1 and b0. ISP v1 is integrated into i.MX95 a0 and a1 versions, while
> ISP v2 is integrated into i.MX95 b0 only. v2 has some HW changes/fixes
> compared to v1 which are handled in the driver.
>
> I kept exact SoC name in neo compatibles to avoid confusion.
>
> However, since a0 and a1 are not targeted for production, but only b0, I
> will keep only one compatible: "nxp,imx95-neoisp". Will use same as file
> name.
ok
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 14+ messages in thread
* [RFC v1 00/11] Add iMX95 neoisp driver
[not found] ` <aYRSMXHjFC0M_DM_@zed>
@ 2026-02-23 12:38 ` Julien Vuillaumier
2026-02-23 16:52 ` Jacopo Mondi
2026-03-20 16:29 ` Antoine Bouyer
1 sibling, 1 reply; 14+ messages in thread
From: Julien Vuillaumier @ 2026-02-23 12:38 UTC (permalink / raw)
To: Jacopo Mondi, Antoine Bouyer
Cc: Michael Riesch, alexi.birlinger, daniel.baluta, peng.fan,
frank.li, laurent.pinchart, mchehab, robh, krzk+dt, conor+dt,
shawnguo, s.hauer, kernel, festevam, linux-kernel, linux-media,
devicetree, linux-arm-kernel, niklas soderlund, Anthony McGivern
Hello Jacopo,
On 2/5/26 10:40, Jacopo Mondi wrote:
> On Wed, Feb 04, 2026 at 07:30:18PM +0100, Antoine Bouyer wrote:
>> Le 04/02/2026 à 18:12, Jacopo Mondi a écrit :
>>> On Tue, Feb 03, 2026 at 07:37:34PM +0100, Jacopo Mondi wrote:
>>>> On Thu, Jan 29, 2026 at 12:00:24AM +0100, Michael Riesch wrote:
>>>>> On 1/28/26 09:17, Antoine Bouyer wrote:
>>>>>> On 1/26/26 10:44 AM, Michael Riesch wrote:
<snip>
>>>>>>> - How many media devices are registered and which driver registers it
>>>>>>> or them?
>>>>>>
>>>>>> That will be part of the evaluation. My initial assumption is that
>>>>>> neoisp would be the appropriate component to register the media device
>>>>>> in this mode, since ISI is not involved, and ISI currently performs the
>>>>>> registration in the M2M configuration.
>>>>
>>>> Isn't the ISP registering its own media graph ?
>>
>> Yes, 8 copies of ISP media graph, that can be used with the 8 output video
>> devices of the ISI media graph.
>>
>
> I suggest you do what RPi does. The mainline driver only registers one
> instance and they carry a little patch downstream that implements the
> for() loop where multiple instances are registered. Duplicating media graphs
> is not desirable (at least in mainline) as we can have ISPs with 256
> contexts, we don't want 256 media graphs.
>
> A framework level solution with proper priority handling and job
> scheduling is what is required and that's what the context work should
> end up being.
>
One system use-case for the platform is the support of 8x cameras 1080p
30fps using m2m operation.
Requiring a downstream patch to register multiple ISP instances in order
to support the multi-cameras use-cases may not be the preferred option.
What would be the issue with having multiple ISP instances created by
the upstream driver?
Alternatively, would it be an option to have some mean (device tree,
module param...) to configure the number of media graph instances
created by the driver?
Thanks,
Julien
>>>>
>>>> Can we get a copy of all media graphs on an i.MX95 system including
>>>> the ISI and the CSI-2 receiver ?
>>
>> Here is an example with multiple sensors. Or do you need it in another
>> format ?
>
> No it's fine, thanks!
>
>>
>>
>> digraph board {
>> rankdir=TB
>> n00000001 [label="{{<port0> 0 | <port1> 1 | <port2> 2 | <port3> 3 |
>> <port4> 4} | crossbar\n/dev/v4l-subdev8 | {<port5> 5 | <port6> 6 | <port7> 7
>> | <port8> 8 | <port9> 9 | <port10> 10 | <port11> 11 | <port12> 12}}",
>> shape=Mrecord, style=filled, fillcolor=green]
>> n00000001:port5 -> n0000000f:port0 [style=bold]
>> n00000001:port6 -> n0000001a:port0 [style=bold]
>> n00000001:port7 -> n00000025:port0 [style=bold]
>> n00000001:port8 -> n00000030:port0 [style=bold]
>> n00000001:port9 -> n0000003b:port0 [style=bold]
>> n00000001:port10 -> n00000046:port0 [style=bold]
>> n00000001:port11 -> n00000051:port0 [style=bold]
>> n00000001:port12 -> n0000005c:port0 [style=bold]
>> n0000000f [label="{{<port0> 0} | mxc_isi.0\n/dev/v4l-subdev9 |
>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>> n0000000f:port1 -> n00000012 [style=bold]
>> n00000012 [label="mxc_isi.0.capture\n/dev/video8", shape=box,
>> style=filled, fillcolor=yellow]
>> n0000001a [label="{{<port0> 0} | mxc_isi.1\n/dev/v4l-subdev10 |
>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>> n0000001a:port1 -> n0000001d [style=bold]
>> n0000001d [label="mxc_isi.1.capture\n/dev/video9", shape=box,
>> style=filled, fillcolor=yellow]
>> n00000025 [label="{{<port0> 0} | mxc_isi.2\n/dev/v4l-subdev11 |
>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>> n00000025:port1 -> n00000028 [style=bold]
>> n00000028 [label="mxc_isi.2.capture\n/dev/video10", shape=box,
>> style=filled, fillcolor=yellow]
>> n00000030 [label="{{<port0> 0} | mxc_isi.3\n/dev/v4l-subdev12 |
>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>> n00000030:port1 -> n00000033 [style=bold]
>> n00000033 [label="mxc_isi.3.capture\n/dev/video13", shape=box,
>> style=filled, fillcolor=yellow]
>> n0000003b [label="{{<port0> 0} | mxc_isi.4\n/dev/v4l-subdev13 |
>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>> n0000003b:port1 -> n0000003e [style=bold]
>> n0000003e [label="mxc_isi.4.capture\n/dev/video14", shape=box,
>> style=filled, fillcolor=yellow]
>> n00000046 [label="{{<port0> 0} | mxc_isi.5\n/dev/v4l-subdev14 |
>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>> n00000046:port1 -> n00000049 [style=bold]
>> n00000049 [label="mxc_isi.5.capture\n/dev/video21", shape=box,
>> style=filled, fillcolor=yellow]
>> n00000051 [label="{{<port0> 0} | mxc_isi.6\n/dev/v4l-subdev15 |
>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>> n00000051:port1 -> n00000054 [style=bold]
>> n00000054 [label="mxc_isi.6.capture\n/dev/video22", shape=box,
>> style=filled, fillcolor=yellow]
>> n0000005c [label="{{<port0> 0} | mxc_isi.7\n/dev/v4l-subdev16 |
>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>> n0000005c:port1 -> n0000005f [style=bold]
>> n0000005f [label="mxc_isi.7.capture\n/dev/video23", shape=box,
>> style=filled, fillcolor=yellow]
>> n00000067 [label="mxc_isi.output\n", shape=box, style=filled,
>> fillcolor=yellow]
>> n00000067 -> n00000001:port4 [style=bold]
>> n0000006e [label="{{<port0> 0} |
>> 4ac10000.syscon:formatter@20\n/dev/v4l-subdev17 | {<port1> 1}}",
>> shape=Mrecord, style=filled, fillcolor=green]
>> n0000006e:port1 -> n00000001:port2 [style=bold]
>> n00000073 [label="{{<port0> 0} |
>> csidev-4ad30000.csi\n/dev/v4l-subdev18 | {<port1> 1}}", shape=Mrecord,
>> style=filled, fillcolor=green]
>> n00000073:port1 -> n0000006e:port0 [style=bold]
>> n00000078 [label="{{<port0> 0 | <port1> 1 | <port2> 2 | <port3> 3} |
>> max96724 2-0027\n/dev/v4l-subdev19 | {<port4> 4 | <port5> 5}}",
>> shape=Mrecord, style=filled, fillcolor=green]
>> n00000078:port4 -> n00000073:port0 [style=dashed]
>> n00000081 [label="{{} | mx95mbcam 8-0040\n/dev/v4l-subdev20 |
>> {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
>> n00000081:port0 -> n00000078:port0 [style=bold]
>> n00000085 [label="{{} | mx95mbcam 9-0040\n/dev/v4l-subdev21 |
>> {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
>> n00000085:port0 -> n00000078:port1 [style=bold]
>> n00000089 [label="{{} | mx95mbcam 10-0040\n/dev/v4l-subdev22 |
>> {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
>> n00000089:port0 -> n00000078:port2 [style=bold]
>> n0000008d [label="{{} | mx95mbcam 11-0040\n/dev/v4l-subdev23 |
>> {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
>> n0000008d:port0 -> n00000078:port3 [style=bold]
>> }
>>
>>
>>>>
>>>> If I'm not mistaken you'll have 8 copies of the ISP media graphs, and
>>>> that's exactly what we're working on with the context framework :)
>>>>
>>
>> Ok. Then I should have a look to context framework too ...
>>
>
> Please, I hope to be able to resume working on it sooner or later
> given the right use case.
>
>>>>
>>>>>
>>>>> ... since it is not, your assumption seems very reasonable.
>>>>>
>>>>>>
>>>>>>> - How can the user decide whether direct (csi2isp) or indirect
>>>>>>> (mem2mem) streaming shall be used?
>>>>>>
>>>>>> That will also be part of the evaluation. From dts would be my first
>>>>>> option, but may prevent using both modes on same platform then.
>>>>>
>>>>> Of course this depends what the hardware is able to do, but in case the
>>>>> HW is reconfigurable easily, I doubt that device tree is a good choice
>>>>> to solve that.
>>>>>>
>>>>>>>
>>>>>>> While it is certainly OK to introduce this support only at a later
>>>>>>> stage, it makes sense to consider this right from the start to avoid
>>>>>>> some nasty changes e.g. in how this hardware is exposed to user space.
>>>>>>>
>>>>>>> Also, we are facing a similiar challenge with recent Rockchip ISP
>>>>>>> hardware (RK3588, RK3576, ...) and it would be great to hear your
>>>>>>> thoughts about that.
>>>>>>
>>>>>> Is there an existing discussion thread available on this topic? I would
>>>>>> be very interested in following it.
>>>>>
>>>>> Not yet, I am afraid. But there should be one or two soon (TM) :-)
>>>>
>>>> It's probably time to have one :)
>>
>> Good. Please loop me in ;)
>
> You are in, this is the conversation ;)
>
> It might be a good discussion point for the media summit in Nice
> co-located with Embedded Recipes if people with interest in the topic
> will going the be there.
>
> I'm also adding Anthony from ARM as I know he's going through the same
> inline/m2m duality you're now facing.
>
> Thanks
> j
>
>>
>> BR
>> Antoine
>>
>>>>
>>>>>
>>>>> Thanks and regards,
>>>>> Michael
>>>>>
>>>>>>
>>>>>> Thanks
>>>>>> Antoine
>>>>>>
>>>>>>>
>>>>>>> Thanks in advance and best regards,
>>>>>>> Michael
>>>>>>>
>>>>>>>>
>>>>>>>> This series is posted as RFC because extending the v4l2-isp interface
>>>>>>>> may
>>>>>>>> overlap with ongoing work. If similar development already exists, I am
>>>>>>>> happy to rebase or adapt the series accordingly. If preferred, the
>>>>>>>> series
>>>>>>>> can also be split into two parts: the v4l2-isp rework and the Neo ISP
>>>>>>>> driver introduction.
>>>>>>>>
>>>>>>>> A few checkpatch warnings in v4l2-ioctl.c remain intentionally to stay
>>>>>>>> consistent with the existing style in that file.
>>>>>>>>
>>>>>>>> Testing was performed on the i.MX95 EVK using the media/next kernel in
>>>>>>>> standalone M2M mode. End-to-end camera-to-ISP capture has been validated
>>>>>>>> using the downstream NXP kernel, as some hardware dependencies are not
>>>>>>>> yet upstreamed.
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Antoine
>>>>>>>>
>>>>>>>> ---
>>>>>>>> Here are v4l2-compliance test results:
>>>>>>>>
>>>>>>>> v4l2-compliance 1.28.1-5233, 64 bits, 64-bit time_t
>>>>>>>> v4l2-compliance SHA: fc15e229d9d3 2024-07-23 19:22:15
>>>>>>>>
>>>>>>>> Compliance test for neoisp device /dev/media0:
>>>>>>>>
>>>>>>>> Media Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Model : neoisp
>>>>>>>> Serial :
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Media version : 6.19.0
>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>> Driver version : 6.19.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:
>>>>>>>> test MEDIA_IOC_G_TOPOLOGY: OK
>>>>>>>> Entities: 7 Interfaces: 7 Pads: 12 Links: 13
>>>>>>>> test MEDIA_IOC_ENUM_ENTITIES/LINKS: OK
>>>>>>>> test MEDIA_IOC_SETUP_LINK: OK
>>>>>>>>
>>>>>>>> Total for neoisp device /dev/media0: 8, Succeeded: 8, Failed: 0,
>>>>>>>> Warnings: 0
>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>> Compliance test for neoisp device /dev/video0:
>>>>>>>>
>>>>>>>> Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Card type : neoisp
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>> Video Capture Multiplanar
>>>>>>>> Video Output Multiplanar
>>>>>>>> Metadata Capture
>>>>>>>> Metadata Output
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Device Capabilities
>>>>>>>> Device Caps : 0x04202000
>>>>>>>> Video Output Multiplanar
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Media Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Model : neoisp
>>>>>>>> Serial :
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Media version : 6.19.0
>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Interface Info:
>>>>>>>> ID : 0x0300000a
>>>>>>>> Type : V4L Video
>>>>>>>> Entity Info:
>>>>>>>> ID : 0x00000008 (8)
>>>>>>>> Name : neoisp-input0
>>>>>>>> Function : V4L2 I/O
>>>>>>>> Pad 0x01000009 : 0: Source
>>>>>>>> Link 0x0200000c: to remote pad 0x1000002 of entity
>>>>>>>> 'neoisp' (Image Signal Processor): Data, Enabled, Immutable
>>>>>>>>
>>>>>>>> Required ioctls:
>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test invalid ioctls: OK
>>>>>>>>
>>>>>>>> Allow for multiple opens:
>>>>>>>> test second /dev/video0 open: OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>> test for unlimited opens: OK
>>>>>>>>
>>>>>>>> Debug ioctls:
>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>
>>>>>>>> Input ioctls:
>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>
>>>>>>>> Output ioctls:
>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>
>>>>>>>> Input/Output configuration ioctls:
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>
>>>>>>>> Control ioctls:
>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>
>>>>>>>> Format ioctls:
>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>> test Cropping: OK
>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>> test Scaling: OK
>>>>>>>>
>>>>>>>> Codec ioctls:
>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>
>>>>>>>> Buffer ioctls:
>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>
>>>>>>>> Total for neoisp device /dev/video0: 48, Succeeded: 48, Failed: 0,
>>>>>>>> Warnings: 0
>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>> Compliance test for neoisp device /dev/video1:
>>>>>>>>
>>>>>>>> Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Card type : neoisp
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>> Video Capture Multiplanar
>>>>>>>> Video Output Multiplanar
>>>>>>>> Metadata Capture
>>>>>>>> Metadata Output
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Device Capabilities
>>>>>>>> Device Caps : 0x04202000
>>>>>>>> Video Output Multiplanar
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Media Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Model : neoisp
>>>>>>>> Serial :
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Media version : 6.19.0
>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Interface Info:
>>>>>>>> ID : 0x03000010
>>>>>>>> Type : V4L Video
>>>>>>>> Entity Info:
>>>>>>>> ID : 0x0000000e (14)
>>>>>>>> Name : neoisp-input1
>>>>>>>> Function : V4L2 I/O
>>>>>>>> Pad 0x0100000f : 0: Source
>>>>>>>> Link 0x02000012: to remote pad 0x1000003 of entity
>>>>>>>> 'neoisp' (Image Signal Processor): Data
>>>>>>>>
>>>>>>>> Required ioctls:
>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test invalid ioctls: OK
>>>>>>>>
>>>>>>>> Allow for multiple opens:
>>>>>>>> test second /dev/video1 open: OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>> test for unlimited opens: OK
>>>>>>>>
>>>>>>>> Debug ioctls:
>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>
>>>>>>>> Input ioctls:
>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>
>>>>>>>> Output ioctls:
>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>
>>>>>>>> Input/Output configuration ioctls:
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>
>>>>>>>> Control ioctls:
>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>
>>>>>>>> Format ioctls:
>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>> test Cropping: OK
>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>> test Scaling: OK
>>>>>>>>
>>>>>>>> Codec ioctls:
>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>
>>>>>>>> Buffer ioctls:
>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>
>>>>>>>> Total for neoisp device /dev/video1: 48, Succeeded: 48, Failed: 0,
>>>>>>>> Warnings: 0
>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>> Compliance test for neoisp device /dev/video2:
>>>>>>>>
>>>>>>>> Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Card type : neoisp
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>> Video Capture Multiplanar
>>>>>>>> Video Output Multiplanar
>>>>>>>> Metadata Capture
>>>>>>>> Metadata Output
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Device Capabilities
>>>>>>>> Device Caps : 0x0c200000
>>>>>>>> Metadata Output
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Media Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Model : neoisp
>>>>>>>> Serial :
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Media version : 6.19.0
>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Interface Info:
>>>>>>>> ID : 0x03000016
>>>>>>>> Type : V4L Video
>>>>>>>> Entity Info:
>>>>>>>> ID : 0x00000014 (20)
>>>>>>>> Name : neoisp-params
>>>>>>>> Function : V4L2 I/O
>>>>>>>> Pad 0x01000015 : 0: Source
>>>>>>>> Link 0x02000018: to remote pad 0x1000004 of entity
>>>>>>>> 'neoisp' (Image Signal Processor): Data, Enabled
>>>>>>>>
>>>>>>>> Required ioctls:
>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test invalid ioctls: OK
>>>>>>>>
>>>>>>>> Allow for multiple opens:
>>>>>>>> test second /dev/video2 open: OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>> test for unlimited opens: OK
>>>>>>>>
>>>>>>>> Debug ioctls:
>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>
>>>>>>>> Input ioctls:
>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>
>>>>>>>> Output ioctls:
>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>
>>>>>>>> Input/Output configuration ioctls:
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>
>>>>>>>> Control ioctls:
>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>
>>>>>>>> Format ioctls:
>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>> test Cropping: OK (Not Supported)
>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>> test Scaling: OK (Not Supported)
>>>>>>>>
>>>>>>>> Codec ioctls:
>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>
>>>>>>>> Buffer ioctls:
>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>
>>>>>>>> Total for neoisp device /dev/video2: 48, Succeeded: 48, Failed: 0,
>>>>>>>> Warnings: 0
>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>> Compliance test for neoisp device /dev/video3:
>>>>>>>>
>>>>>>>> Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Card type : neoisp
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>> Video Capture Multiplanar
>>>>>>>> Video Output Multiplanar
>>>>>>>> Metadata Capture
>>>>>>>> Metadata Output
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Device Capabilities
>>>>>>>> Device Caps : 0x04201000
>>>>>>>> Video Capture Multiplanar
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Media Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Model : neoisp
>>>>>>>> Serial :
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Media version : 6.19.0
>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Interface Info:
>>>>>>>> ID : 0x0300001c
>>>>>>>> Type : V4L Video
>>>>>>>> Entity Info:
>>>>>>>> ID : 0x0000001a (26)
>>>>>>>> Name : neoisp-frame
>>>>>>>> Function : V4L2 I/O
>>>>>>>> Pad 0x0100001b : 0: Sink
>>>>>>>> Link 0x0200001e: from remote pad 0x1000005 of entity
>>>>>>>> 'neoisp' (Image Signal Processor): Data, Enabled
>>>>>>>>
>>>>>>>> Required ioctls:
>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test invalid ioctls: OK
>>>>>>>>
>>>>>>>> Allow for multiple opens:
>>>>>>>> test second /dev/video3 open: OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>> test for unlimited opens: OK
>>>>>>>>
>>>>>>>> Debug ioctls:
>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>
>>>>>>>> Input ioctls:
>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>
>>>>>>>> Output ioctls:
>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>
>>>>>>>> Input/Output configuration ioctls:
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>
>>>>>>>> Control ioctls:
>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>
>>>>>>>> Format ioctls:
>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>> test Cropping: OK (Not Supported)
>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>> test Scaling: OK
>>>>>>>>
>>>>>>>> Codec ioctls:
>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>
>>>>>>>> Buffer ioctls:
>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>
>>>>>>>> Total for neoisp device /dev/video3: 48, Succeeded: 48, Failed: 0,
>>>>>>>> Warnings: 0
>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>> Compliance test for neoisp device /dev/video4:
>>>>>>>>
>>>>>>>> Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Card type : neoisp
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>> Video Capture Multiplanar
>>>>>>>> Video Output Multiplanar
>>>>>>>> Metadata Capture
>>>>>>>> Metadata Output
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Device Capabilities
>>>>>>>> Device Caps : 0x04201000
>>>>>>>> Video Capture Multiplanar
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Media Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Model : neoisp
>>>>>>>> Serial :
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Media version : 6.19.0
>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Interface Info:
>>>>>>>> ID : 0x03000022
>>>>>>>> Type : V4L Video
>>>>>>>> Entity Info:
>>>>>>>> ID : 0x00000020 (32)
>>>>>>>> Name : neoisp-ir
>>>>>>>> Function : V4L2 I/O
>>>>>>>> Pad 0x01000021 : 0: Sink
>>>>>>>> Link 0x02000024: from remote pad 0x1000006 of entity
>>>>>>>> 'neoisp' (Image Signal Processor): Data
>>>>>>>>
>>>>>>>> Required ioctls:
>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test invalid ioctls: OK
>>>>>>>>
>>>>>>>> Allow for multiple opens:
>>>>>>>> test second /dev/video4 open: OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>> test for unlimited opens: OK
>>>>>>>>
>>>>>>>> Debug ioctls:
>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>
>>>>>>>> Input ioctls:
>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>
>>>>>>>> Output ioctls:
>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>
>>>>>>>> Input/Output configuration ioctls:
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>
>>>>>>>> Control ioctls:
>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>
>>>>>>>> Format ioctls:
>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>> test Cropping: OK (Not Supported)
>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>> test Scaling: OK
>>>>>>>>
>>>>>>>> Codec ioctls:
>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>
>>>>>>>> Buffer ioctls:
>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>
>>>>>>>> Total for neoisp device /dev/video4: 48, Succeeded: 48, Failed: 0,
>>>>>>>> Warnings: 0
>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>> Compliance test for neoisp device /dev/video5:
>>>>>>>>
>>>>>>>> Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Card type : neoisp
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>> Video Capture Multiplanar
>>>>>>>> Video Output Multiplanar
>>>>>>>> Metadata Capture
>>>>>>>> Metadata Output
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Device Capabilities
>>>>>>>> Device Caps : 0x04a00000
>>>>>>>> Metadata Capture
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Media Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Model : neoisp
>>>>>>>> Serial :
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Media version : 6.19.0
>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Interface Info:
>>>>>>>> ID : 0x03000028
>>>>>>>> Type : V4L Video
>>>>>>>> Entity Info:
>>>>>>>> ID : 0x00000026 (38)
>>>>>>>> Name : neoisp-stats
>>>>>>>> Function : V4L2 I/O
>>>>>>>> Pad 0x01000027 : 0: Sink
>>>>>>>> Link 0x0200002a: from remote pad 0x1000007 of entity
>>>>>>>> 'neoisp' (Image Signal Processor): Data, Enabled
>>>>>>>>
>>>>>>>> Required ioctls:
>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test invalid ioctls: OK
>>>>>>>>
>>>>>>>> Allow for multiple opens:
>>>>>>>> test second /dev/video5 open: OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>> test for unlimited opens: OK
>>>>>>>>
>>>>>>>> Debug ioctls:
>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>
>>>>>>>> Input ioctls:
>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>
>>>>>>>> Output ioctls:
>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>
>>>>>>>> Input/Output configuration ioctls:
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>
>>>>>>>> Control ioctls:
>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>
>>>>>>>> Format ioctls:
>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>> test Cropping: OK (Not Supported)
>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>> test Scaling: OK (Not Supported)
>>>>>>>>
>>>>>>>> Codec ioctls:
>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>
>>>>>>>> Buffer ioctls:
>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>
>>>>>>>> Total for neoisp device /dev/video5: 48, Succeeded: 48, Failed: 0,
>>>>>>>> Warnings: 0
>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>> Compliance test for neoisp device /dev/v4l-subdev0:
>>>>>>>>
>>>>>>>> Driver Info:
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Capabilities : 0x00000000
>>>>>>>> Client Capabilities: 0x0000000000000002
>>>>>>>> interval-uses-which Media Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Model : neoisp
>>>>>>>> Serial :
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Media version : 6.19.0
>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Interface Info:
>>>>>>>> ID : 0x0300002c
>>>>>>>> Type : V4L Sub-Device
>>>>>>>> Entity Info:
>>>>>>>> ID : 0x00000001 (1)
>>>>>>>> Name : neoisp
>>>>>>>> Function : Image Signal Processor
>>>>>>>> Pad 0x01000002 : 0: Sink
>>>>>>>> Link 0x0200000c: from remote pad 0x1000009 of entity
>>>>>>>> 'neoisp-input0' (V4L2 I/O): Data, Enabled, Immutable
>>>>>>>> Pad 0x01000003 : 1: Sink
>>>>>>>> Link 0x02000012: from remote pad 0x100000f of entity
>>>>>>>> 'neoisp-input1' (V4L2 I/O): Data
>>>>>>>> Pad 0x01000004 : 2: Sink
>>>>>>>> Link 0x02000018: from remote pad 0x1000015 of entity
>>>>>>>> 'neoisp-params' (V4L2 I/O): Data, Enabled
>>>>>>>> Pad 0x01000005 : 3: Source
>>>>>>>> Link 0x0200001e: to remote pad 0x100001b of entity 'neoisp-
>>>>>>>> frame' (V4L2 I/O): Data, Enabled
>>>>>>>> Pad 0x01000006 : 4: Source
>>>>>>>> Link 0x02000024: to remote pad 0x1000021 of entity 'neoisp-
>>>>>>>> ir' (V4L2 I/O): Data
>>>>>>>> Pad 0x01000007 : 5: Source
>>>>>>>> Link 0x0200002a: to remote pad 0x1000027 of entity 'neoisp-
>>>>>>>> stats' (V4L2 I/O): Data, Enabled
>>>>>>>>
>>>>>>>> Required ioctls:
>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>> test VIDIOC_SUDBEV_QUERYCAP: OK
>>>>>>>> test invalid ioctls: OK
>>>>>>>>
>>>>>>>> Allow for multiple opens:
>>>>>>>> test second /dev/v4l-subdev0 open: OK
>>>>>>>> test VIDIOC_SUBDEV_QUERYCAP: OK
>>>>>>>> test for unlimited opens: OK
>>>>>>>>
>>>>>>>> Debug ioctls:
>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>
>>>>>>>> Input ioctls:
>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>
>>>>>>>> Output ioctls:
>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>
>>>>>>>> Input/Output configuration ioctls:
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>
>>>>>>>> Sub-Device ioctls (Sink Pad 0):
>>>>>>>> Try Stream 0
>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> Active Stream 0
>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>
>>>>>>>> Sub-Device ioctls (Sink Pad 1):
>>>>>>>> Try Stream 0
>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> Active Stream 0
>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>
>>>>>>>> Sub-Device ioctls (Sink Pad 2):
>>>>>>>> Try Stream 0
>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> Active Stream 0
>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>
>>>>>>>> Sub-Device ioctls (Source Pad 3):
>>>>>>>> Try Stream 0
>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> Active Stream 0
>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>
>>>>>>>> Sub-Device ioctls (Source Pad 4):
>>>>>>>> Try Stream 0
>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> Active Stream 0
>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>
>>>>>>>> Sub-Device ioctls (Source Pad 5):
>>>>>>>> Try Stream 0
>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> Active Stream 0
>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>
>>>>>>>> Control ioctls:
>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
>>>>>>>> test VIDIOC_QUERYCTRL: OK
>>>>>>>> test VIDIOC_G/S_CTRL: OK
>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK
>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>> Standard Controls: 1 Private Controls: 1
>>>>>>>>
>>>>>>>> Format ioctls:
>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not
>>>>>>>> Supported)
>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FMT: OK (Not Supported)
>>>>>>>> test VIDIOC_TRY_FMT: OK (Not Supported)
>>>>>>>> test VIDIOC_S_FMT: OK (Not Supported)
>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>> test Cropping: OK (Not Supported)
>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>> test Scaling: OK (Not Supported)
>>>>>>>>
>>>>>>>> Codec ioctls:
>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>
>>>>>>>> Buffer ioctls:
>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK (Not Supported)
>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>> test VIDIOC_EXPBUF: OK (Not Supported)
>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>
>>>>>>>> Total for neoisp device /dev/v4l-subdev0: 88, Succeeded: 88, Failed:
>>>>>>>> 0, Warnings: 0
>>>>>>>>
>>>>>>>> Grand Total for neoisp device /dev/media0: 384, Succeeded: 384,
>>>>>>>> Failed: 0, Warnings: 0
>>>>>>>>
>>>>>>>> ---
>>>>>>>> Antoine Bouyer (11):
>>>>>>>> media: uapi: v4l2-isp: Add v4l2 ISP extensible statistics definitions
>>>>>>>> media: v4l2-isp: Add helper function to compute extended stats size
>>>>>>>> media: Documentation: uapi: Update V4L2 ISP for extensible stats
>>>>>>>> media: Documentation: Add NXP neoisp driver documentation
>>>>>>>> dt-bindings: media: Add nxp neoisp support
>>>>>>>> media: v4l2-ctrls: Add user control base for NXP neoisp controls
>>>>>>>> media: Add meta formats supported by NXP neoisp driver
>>>>>>>> media: uapi: Add NXP NEOISP user interface header file
>>>>>>>> media: platform: Add NXP Neoisp Image Signal Processor
>>>>>>>> media: platform: neoisp: Add debugfs support
>>>>>>>> arm64: dts: freescale: imx95: Add NXP neoisp device tree node
>>>>>>>>
>>>>>>>> .../admin-guide/media/nxp-neoisp-diagram.dot | 22 +
>>>>>>>> .../admin-guide/media/nxp-neoisp.dot | 16 +
>>>>>>>> .../admin-guide/media/nxp-neoisp.rst | 189 ++
>>>>>>>> .../admin-guide/media/v4l-drivers.rst | 1 +
>>>>>>>> .../devicetree/bindings/media/nxp,neoisp.yaml | 65 +
>>>>>>>> .../userspace-api/media/v4l/meta-formats.rst | 1 +
>>>>>>>> .../media/v4l/metafmt-nxp-neoisp.rst | 114 +
>>>>>>>> .../userspace-api/media/v4l/v4l2-isp.rst | 42 +-
>>>>>>>> MAINTAINERS | 9 +
>>>>>>>> .../boot/dts/freescale/imx95-19x19-evk.dts | 4 +
>>>>>>>> arch/arm64/boot/dts/freescale/imx95.dtsi | 11 +
>>>>>>>> drivers/media/platform/nxp/Kconfig | 1 +
>>>>>>>> drivers/media/platform/nxp/Makefile | 1 +
>>>>>>>> drivers/media/platform/nxp/neoisp/Kconfig | 15 +
>>>>>>>> drivers/media/platform/nxp/neoisp/Makefile | 8 +
>>>>>>>> drivers/media/platform/nxp/neoisp/neoisp.h | 270 ++
>>>>>>>> .../media/platform/nxp/neoisp/neoisp_ctx.c | 2798 +++++++++++++++++
>>>>>>>> .../media/platform/nxp/neoisp/neoisp_ctx.h | 85 +
>>>>>>>> .../platform/nxp/neoisp/neoisp_debugfs.c | 503 +++
>>>>>>>> .../media/platform/nxp/neoisp/neoisp_fmt.h | 509 +++
>>>>>>>> drivers/media/platform/nxp/neoisp/neoisp_hw.h | 577 ++++
>>>>>>>> .../media/platform/nxp/neoisp/neoisp_main.c | 1999 ++++++++++++
>>>>>>>> .../media/platform/nxp/neoisp/neoisp_nodes.h | 60 +
>>>>>>>> .../media/platform/nxp/neoisp/neoisp_regs.h | 2501 +++++++++++++++
>>>>>>>> drivers/media/v4l2-core/v4l2-ioctl.c | 4 +
>>>>>>>> include/media/v4l2-isp.h | 13 +
>>>>>>>> include/uapi/linux/media/nxp/nxp_neoisp.h | 1968 ++++++++++++
>>>>>>>> include/uapi/linux/media/v4l2-isp.h | 85 +
>>>>>>>> include/uapi/linux/v4l2-controls.h | 6 +
>>>>>>>> include/uapi/linux/videodev2.h | 6 +
>>>>>>>> 30 files changed, 11880 insertions(+), 3 deletions(-)
>>>>>>>> create mode 100644 Documentation/admin-guide/media/nxp-neoisp-
>>>>>>>> diagram.dot
>>>>>>>> create mode 100644 Documentation/admin-guide/media/nxp-neoisp.dot
>>>>>>>> create mode 100644 Documentation/admin-guide/media/nxp-neoisp.rst
>>>>>>>> create mode 100644 Documentation/devicetree/bindings/media/
>>>>>>>> nxp,neoisp.yaml
>>>>>>>> create mode 100644 Documentation/userspace-api/media/v4l/metafmt-
>>>>>>>> nxp-neoisp.rst
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/Kconfig
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/Makefile
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp.h
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_ctx.c
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_ctx.h
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_debugfs.c
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_fmt.h
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_hw.h
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_main.c
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_nodes.h
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_regs.h
>>>>>>>> create mode 100644 include/uapi/linux/media/nxp/nxp_neoisp.h
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [RFC v1 00/11] Add iMX95 neoisp driver
2026-02-23 12:38 ` [RFC v1 00/11] Add iMX95 neoisp driver Julien Vuillaumier
@ 2026-02-23 16:52 ` Jacopo Mondi
2026-02-24 19:01 ` Julien Vuillaumier
0 siblings, 1 reply; 14+ messages in thread
From: Jacopo Mondi @ 2026-02-23 16:52 UTC (permalink / raw)
To: Julien Vuillaumier, Sakari Ailus, Hans Verkuil,
laurent.pinchart@ideasonboard.com
Cc: Jacopo Mondi, Antoine Bouyer, Michael Riesch, alexi.birlinger,
daniel.baluta, peng.fan, frank.li, laurent.pinchart, mchehab,
robh, krzk+dt, conor+dt, shawnguo, s.hauer, kernel, festevam,
linux-kernel, linux-media, devicetree, linux-arm-kernel,
niklas soderlund, Anthony McGivern
Hello Julien
On Mon, Feb 23, 2026 at 01:38:20PM +0100, Julien Vuillaumier wrote:
> Hello Jacopo,
>
> On 2/5/26 10:40, Jacopo Mondi wrote:
> > On Wed, Feb 04, 2026 at 07:30:18PM +0100, Antoine Bouyer wrote:
> > > Le 04/02/2026 à 18:12, Jacopo Mondi a écrit :
> > > > On Tue, Feb 03, 2026 at 07:37:34PM +0100, Jacopo Mondi wrote:
> > > > > On Thu, Jan 29, 2026 at 12:00:24AM +0100, Michael Riesch wrote:
> > > > > > On 1/28/26 09:17, Antoine Bouyer wrote:
> > > > > > > On 1/26/26 10:44 AM, Michael Riesch wrote:
>
> <snip>
>
> > > > > > > > - How many media devices are registered and which driver registers it
> > > > > > > > or them?
> > > > > > >
> > > > > > > That will be part of the evaluation. My initial assumption is that
> > > > > > > neoisp would be the appropriate component to register the media device
> > > > > > > in this mode, since ISI is not involved, and ISI currently performs the
> > > > > > > registration in the M2M configuration.
> > > > >
> > > > > Isn't the ISP registering its own media graph ?
> > >
> > > Yes, 8 copies of ISP media graph, that can be used with the 8 output video
> > > devices of the ISI media graph.
> > >
> >
> > I suggest you do what RPi does. The mainline driver only registers one
> > instance and they carry a little patch downstream that implements the
> > for() loop where multiple instances are registered. Duplicating media graphs
> > is not desirable (at least in mainline) as we can have ISPs with 256
> > contexts, we don't want 256 media graphs.
> >
> > A framework level solution with proper priority handling and job
> > scheduling is what is required and that's what the context work should
> > end up being.
> >
>
> One system use-case for the platform is the support of 8x cameras 1080p
> 30fps using m2m operation.
> Requiring a downstream patch to register multiple ISP instances in order to
> support the multi-cameras use-cases may not be the preferred option.
>
> What would be the issue with having multiple ISP instances created by the
> upstream driver?
You would be registering a media graph instance for each supported ISP
context, not per each ISP instance in the system, effectively
virtualizing access your hardware resources while losing the ability
to implement resource sharing arbitration.
By duplicating the graphs you won't be able to implement priorities
and job scheduling at the media device level. You are now time
multiplexing a single hardware resource but you've lost the single
point of control where an API to manage resources allocation can be
implemented.
As the media subsystem is also growing towards a "media device
centric" API for several reasons, including reducing the number of
ioctl required today to operate a Video4Linux2 camera, this approach
goes in the opposite direction.
Also we have today ISPs with 8 and 16 context on the market, going
forward I think it's reasonable to expect this number to grow. If we
allow 2, 8 or 16 media graphs today why not 64 or 128 tomorrow ?
> Alternatively, would it be an option to have some mean (device tree, module
> param...) to configure the number of media graph instances created by the
> driver?
Do you mean having a way to modify the driver behaviour to register
multiple media devices in case one wants to without changing the
driver code ?
If we're talking mainline, I hardly see this being accepted as a dt
property. A module parameter I'm not sure. I wouldn't like the idea
much as it would effectively allow working around a limitation instead
of trying to achieve a proper solution at the framework level, with
the result that we'll never get past the current technical debt.
You might want to check with others as well, specifically Sakari
Laurent and Hans, they might have different opinions of course.
(I've cc-ed them).
Thanks
j
>
> Thanks,
> Julien
>
> > > > >
> > > > > Can we get a copy of all media graphs on an i.MX95 system including
> > > > > the ISI and the CSI-2 receiver ?
> > >
> > > Here is an example with multiple sensors. Or do you need it in another
> > > format ?
> >
> > No it's fine, thanks!
> >
> > >
> > >
> > > digraph board {
> > > rankdir=TB
> > > n00000001 [label="{{<port0> 0 | <port1> 1 | <port2> 2 | <port3> 3 |
> > > <port4> 4} | crossbar\n/dev/v4l-subdev8 | {<port5> 5 | <port6> 6 | <port7> 7
> > > | <port8> 8 | <port9> 9 | <port10> 10 | <port11> 11 | <port12> 12}}",
> > > shape=Mrecord, style=filled, fillcolor=green]
> > > n00000001:port5 -> n0000000f:port0 [style=bold]
> > > n00000001:port6 -> n0000001a:port0 [style=bold]
> > > n00000001:port7 -> n00000025:port0 [style=bold]
> > > n00000001:port8 -> n00000030:port0 [style=bold]
> > > n00000001:port9 -> n0000003b:port0 [style=bold]
> > > n00000001:port10 -> n00000046:port0 [style=bold]
> > > n00000001:port11 -> n00000051:port0 [style=bold]
> > > n00000001:port12 -> n0000005c:port0 [style=bold]
> > > n0000000f [label="{{<port0> 0} | mxc_isi.0\n/dev/v4l-subdev9 |
> > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n0000000f:port1 -> n00000012 [style=bold]
> > > n00000012 [label="mxc_isi.0.capture\n/dev/video8", shape=box,
> > > style=filled, fillcolor=yellow]
> > > n0000001a [label="{{<port0> 0} | mxc_isi.1\n/dev/v4l-subdev10 |
> > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n0000001a:port1 -> n0000001d [style=bold]
> > > n0000001d [label="mxc_isi.1.capture\n/dev/video9", shape=box,
> > > style=filled, fillcolor=yellow]
> > > n00000025 [label="{{<port0> 0} | mxc_isi.2\n/dev/v4l-subdev11 |
> > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n00000025:port1 -> n00000028 [style=bold]
> > > n00000028 [label="mxc_isi.2.capture\n/dev/video10", shape=box,
> > > style=filled, fillcolor=yellow]
> > > n00000030 [label="{{<port0> 0} | mxc_isi.3\n/dev/v4l-subdev12 |
> > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n00000030:port1 -> n00000033 [style=bold]
> > > n00000033 [label="mxc_isi.3.capture\n/dev/video13", shape=box,
> > > style=filled, fillcolor=yellow]
> > > n0000003b [label="{{<port0> 0} | mxc_isi.4\n/dev/v4l-subdev13 |
> > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n0000003b:port1 -> n0000003e [style=bold]
> > > n0000003e [label="mxc_isi.4.capture\n/dev/video14", shape=box,
> > > style=filled, fillcolor=yellow]
> > > n00000046 [label="{{<port0> 0} | mxc_isi.5\n/dev/v4l-subdev14 |
> > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n00000046:port1 -> n00000049 [style=bold]
> > > n00000049 [label="mxc_isi.5.capture\n/dev/video21", shape=box,
> > > style=filled, fillcolor=yellow]
> > > n00000051 [label="{{<port0> 0} | mxc_isi.6\n/dev/v4l-subdev15 |
> > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n00000051:port1 -> n00000054 [style=bold]
> > > n00000054 [label="mxc_isi.6.capture\n/dev/video22", shape=box,
> > > style=filled, fillcolor=yellow]
> > > n0000005c [label="{{<port0> 0} | mxc_isi.7\n/dev/v4l-subdev16 |
> > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n0000005c:port1 -> n0000005f [style=bold]
> > > n0000005f [label="mxc_isi.7.capture\n/dev/video23", shape=box,
> > > style=filled, fillcolor=yellow]
> > > n00000067 [label="mxc_isi.output\n", shape=box, style=filled,
> > > fillcolor=yellow]
> > > n00000067 -> n00000001:port4 [style=bold]
> > > n0000006e [label="{{<port0> 0} |
> > > 4ac10000.syscon:formatter@20\n/dev/v4l-subdev17 | {<port1> 1}}",
> > > shape=Mrecord, style=filled, fillcolor=green]
> > > n0000006e:port1 -> n00000001:port2 [style=bold]
> > > n00000073 [label="{{<port0> 0} |
> > > csidev-4ad30000.csi\n/dev/v4l-subdev18 | {<port1> 1}}", shape=Mrecord,
> > > style=filled, fillcolor=green]
> > > n00000073:port1 -> n0000006e:port0 [style=bold]
> > > n00000078 [label="{{<port0> 0 | <port1> 1 | <port2> 2 | <port3> 3} |
> > > max96724 2-0027\n/dev/v4l-subdev19 | {<port4> 4 | <port5> 5}}",
> > > shape=Mrecord, style=filled, fillcolor=green]
> > > n00000078:port4 -> n00000073:port0 [style=dashed]
> > > n00000081 [label="{{} | mx95mbcam 8-0040\n/dev/v4l-subdev20 |
> > > {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n00000081:port0 -> n00000078:port0 [style=bold]
> > > n00000085 [label="{{} | mx95mbcam 9-0040\n/dev/v4l-subdev21 |
> > > {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n00000085:port0 -> n00000078:port1 [style=bold]
> > > n00000089 [label="{{} | mx95mbcam 10-0040\n/dev/v4l-subdev22 |
> > > {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n00000089:port0 -> n00000078:port2 [style=bold]
> > > n0000008d [label="{{} | mx95mbcam 11-0040\n/dev/v4l-subdev23 |
> > > {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n0000008d:port0 -> n00000078:port3 [style=bold]
> > > }
> > >
> > >
> > > > >
> > > > > If I'm not mistaken you'll have 8 copies of the ISP media graphs, and
> > > > > that's exactly what we're working on with the context framework :)
> > > > >
> > >
> > > Ok. Then I should have a look to context framework too ...
> > >
> >
> > Please, I hope to be able to resume working on it sooner or later
> > given the right use case.
> >
> > > > >
> > > > > >
> > > > > > ... since it is not, your assumption seems very reasonable.
> > > > > >
> > > > > > >
> > > > > > > > - How can the user decide whether direct (csi2isp) or indirect
> > > > > > > > (mem2mem) streaming shall be used?
> > > > > > >
> > > > > > > That will also be part of the evaluation. From dts would be my first
> > > > > > > option, but may prevent using both modes on same platform then.
> > > > > >
> > > > > > Of course this depends what the hardware is able to do, but in case the
> > > > > > HW is reconfigurable easily, I doubt that device tree is a good choice
> > > > > > to solve that.
> > > > > > >
> > > > > > > >
> > > > > > > > While it is certainly OK to introduce this support only at a later
> > > > > > > > stage, it makes sense to consider this right from the start to avoid
> > > > > > > > some nasty changes e.g. in how this hardware is exposed to user space.
> > > > > > > >
> > > > > > > > Also, we are facing a similiar challenge with recent Rockchip ISP
> > > > > > > > hardware (RK3588, RK3576, ...) and it would be great to hear your
> > > > > > > > thoughts about that.
> > > > > > >
> > > > > > > Is there an existing discussion thread available on this topic? I would
> > > > > > > be very interested in following it.
> > > > > >
> > > > > > Not yet, I am afraid. But there should be one or two soon (TM) :-)
> > > > >
> > > > > It's probably time to have one :)
> > >
> > > Good. Please loop me in ;)
> >
> > You are in, this is the conversation ;)
> >
> > It might be a good discussion point for the media summit in Nice
> > co-located with Embedded Recipes if people with interest in the topic
> > will going the be there.
> >
> > I'm also adding Anthony from ARM as I know he's going through the same
> > inline/m2m duality you're now facing.
> >
> > Thanks
> > j
> >
> > >
> > > BR
> > > Antoine
> > >
> > > > >
> > > > > >
> > > > > > Thanks and regards,
> > > > > > Michael
> > > > > >
> > > > > > >
> > > > > > > Thanks
> > > > > > > Antoine
> > > > > > >
> > > > > > > >
> > > > > > > > Thanks in advance and best regards,
> > > > > > > > Michael
> > > > > > > >
> > > > > > > > >
> > > > > > > > > This series is posted as RFC because extending the v4l2-isp interface
> > > > > > > > > may
> > > > > > > > > overlap with ongoing work. If similar development already exists, I am
> > > > > > > > > happy to rebase or adapt the series accordingly. If preferred, the
> > > > > > > > > series
> > > > > > > > > can also be split into two parts: the v4l2-isp rework and the Neo ISP
> > > > > > > > > driver introduction.
> > > > > > > > >
> > > > > > > > > A few checkpatch warnings in v4l2-ioctl.c remain intentionally to stay
> > > > > > > > > consistent with the existing style in that file.
> > > > > > > > >
> > > > > > > > > Testing was performed on the i.MX95 EVK using the media/next kernel in
> > > > > > > > > standalone M2M mode. End-to-end camera-to-ISP capture has been validated
> > > > > > > > > using the downstream NXP kernel, as some hardware dependencies are not
> > > > > > > > > yet upstreamed.
> > > > > > > > >
> > > > > > > > > Thanks,
> > > > > > > > > Antoine
> > > > > > > > >
> > > > > > > > > ---
> > > > > > > > > Here are v4l2-compliance test results:
> > > > > > > > >
> > > > > > > > > v4l2-compliance 1.28.1-5233, 64 bits, 64-bit time_t
> > > > > > > > > v4l2-compliance SHA: fc15e229d9d3 2024-07-23 19:22:15
> > > > > > > > >
> > > > > > > > > Compliance test for neoisp device /dev/media0:
> > > > > > > > >
> > > > > > > > > Media Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Model : neoisp
> > > > > > > > > Serial :
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Media version : 6.19.0
> > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > Driver version : 6.19.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:
> > > > > > > > > test MEDIA_IOC_G_TOPOLOGY: OK
> > > > > > > > > Entities: 7 Interfaces: 7 Pads: 12 Links: 13
> > > > > > > > > test MEDIA_IOC_ENUM_ENTITIES/LINKS: OK
> > > > > > > > > test MEDIA_IOC_SETUP_LINK: OK
> > > > > > > > >
> > > > > > > > > Total for neoisp device /dev/media0: 8, Succeeded: 8, Failed: 0,
> > > > > > > > > Warnings: 0
> > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > Compliance test for neoisp device /dev/video0:
> > > > > > > > >
> > > > > > > > > Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Card type : neoisp
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > Video Capture Multiplanar
> > > > > > > > > Video Output Multiplanar
> > > > > > > > > Metadata Capture
> > > > > > > > > Metadata Output
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Device Capabilities
> > > > > > > > > Device Caps : 0x04202000
> > > > > > > > > Video Output Multiplanar
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Media Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Model : neoisp
> > > > > > > > > Serial :
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Media version : 6.19.0
> > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Interface Info:
> > > > > > > > > ID : 0x0300000a
> > > > > > > > > Type : V4L Video
> > > > > > > > > Entity Info:
> > > > > > > > > ID : 0x00000008 (8)
> > > > > > > > > Name : neoisp-input0
> > > > > > > > > Function : V4L2 I/O
> > > > > > > > > Pad 0x01000009 : 0: Source
> > > > > > > > > Link 0x0200000c: to remote pad 0x1000002 of entity
> > > > > > > > > 'neoisp' (Image Signal Processor): Data, Enabled, Immutable
> > > > > > > > >
> > > > > > > > > Required ioctls:
> > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test invalid ioctls: OK
> > > > > > > > >
> > > > > > > > > Allow for multiple opens:
> > > > > > > > > test second /dev/video0 open: OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > test for unlimited opens: OK
> > > > > > > > >
> > > > > > > > > Debug ioctls:
> > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Input ioctls:
> > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > >
> > > > > > > > > Output ioctls:
> > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > >
> > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Control ioctls:
> > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > >
> > > > > > > > > Format ioctls:
> > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > test Cropping: OK
> > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > test Scaling: OK
> > > > > > > > >
> > > > > > > > > Codec ioctls:
> > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Buffer ioctls:
> > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Total for neoisp device /dev/video0: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > Warnings: 0
> > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > Compliance test for neoisp device /dev/video1:
> > > > > > > > >
> > > > > > > > > Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Card type : neoisp
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > Video Capture Multiplanar
> > > > > > > > > Video Output Multiplanar
> > > > > > > > > Metadata Capture
> > > > > > > > > Metadata Output
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Device Capabilities
> > > > > > > > > Device Caps : 0x04202000
> > > > > > > > > Video Output Multiplanar
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Media Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Model : neoisp
> > > > > > > > > Serial :
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Media version : 6.19.0
> > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Interface Info:
> > > > > > > > > ID : 0x03000010
> > > > > > > > > Type : V4L Video
> > > > > > > > > Entity Info:
> > > > > > > > > ID : 0x0000000e (14)
> > > > > > > > > Name : neoisp-input1
> > > > > > > > > Function : V4L2 I/O
> > > > > > > > > Pad 0x0100000f : 0: Source
> > > > > > > > > Link 0x02000012: to remote pad 0x1000003 of entity
> > > > > > > > > 'neoisp' (Image Signal Processor): Data
> > > > > > > > >
> > > > > > > > > Required ioctls:
> > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test invalid ioctls: OK
> > > > > > > > >
> > > > > > > > > Allow for multiple opens:
> > > > > > > > > test second /dev/video1 open: OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > test for unlimited opens: OK
> > > > > > > > >
> > > > > > > > > Debug ioctls:
> > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Input ioctls:
> > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > >
> > > > > > > > > Output ioctls:
> > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > >
> > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Control ioctls:
> > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > >
> > > > > > > > > Format ioctls:
> > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > test Cropping: OK
> > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > test Scaling: OK
> > > > > > > > >
> > > > > > > > > Codec ioctls:
> > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Buffer ioctls:
> > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Total for neoisp device /dev/video1: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > Warnings: 0
> > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > Compliance test for neoisp device /dev/video2:
> > > > > > > > >
> > > > > > > > > Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Card type : neoisp
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > Video Capture Multiplanar
> > > > > > > > > Video Output Multiplanar
> > > > > > > > > Metadata Capture
> > > > > > > > > Metadata Output
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Device Capabilities
> > > > > > > > > Device Caps : 0x0c200000
> > > > > > > > > Metadata Output
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Media Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Model : neoisp
> > > > > > > > > Serial :
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Media version : 6.19.0
> > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Interface Info:
> > > > > > > > > ID : 0x03000016
> > > > > > > > > Type : V4L Video
> > > > > > > > > Entity Info:
> > > > > > > > > ID : 0x00000014 (20)
> > > > > > > > > Name : neoisp-params
> > > > > > > > > Function : V4L2 I/O
> > > > > > > > > Pad 0x01000015 : 0: Source
> > > > > > > > > Link 0x02000018: to remote pad 0x1000004 of entity
> > > > > > > > > 'neoisp' (Image Signal Processor): Data, Enabled
> > > > > > > > >
> > > > > > > > > Required ioctls:
> > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test invalid ioctls: OK
> > > > > > > > >
> > > > > > > > > Allow for multiple opens:
> > > > > > > > > test second /dev/video2 open: OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > test for unlimited opens: OK
> > > > > > > > >
> > > > > > > > > Debug ioctls:
> > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Input ioctls:
> > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > >
> > > > > > > > > Output ioctls:
> > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > >
> > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Control ioctls:
> > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > >
> > > > > > > > > Format ioctls:
> > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > test Cropping: OK (Not Supported)
> > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > test Scaling: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Codec ioctls:
> > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Buffer ioctls:
> > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Total for neoisp device /dev/video2: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > Warnings: 0
> > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > Compliance test for neoisp device /dev/video3:
> > > > > > > > >
> > > > > > > > > Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Card type : neoisp
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > Video Capture Multiplanar
> > > > > > > > > Video Output Multiplanar
> > > > > > > > > Metadata Capture
> > > > > > > > > Metadata Output
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Device Capabilities
> > > > > > > > > Device Caps : 0x04201000
> > > > > > > > > Video Capture Multiplanar
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Media Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Model : neoisp
> > > > > > > > > Serial :
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Media version : 6.19.0
> > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Interface Info:
> > > > > > > > > ID : 0x0300001c
> > > > > > > > > Type : V4L Video
> > > > > > > > > Entity Info:
> > > > > > > > > ID : 0x0000001a (26)
> > > > > > > > > Name : neoisp-frame
> > > > > > > > > Function : V4L2 I/O
> > > > > > > > > Pad 0x0100001b : 0: Sink
> > > > > > > > > Link 0x0200001e: from remote pad 0x1000005 of entity
> > > > > > > > > 'neoisp' (Image Signal Processor): Data, Enabled
> > > > > > > > >
> > > > > > > > > Required ioctls:
> > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test invalid ioctls: OK
> > > > > > > > >
> > > > > > > > > Allow for multiple opens:
> > > > > > > > > test second /dev/video3 open: OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > test for unlimited opens: OK
> > > > > > > > >
> > > > > > > > > Debug ioctls:
> > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Input ioctls:
> > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > >
> > > > > > > > > Output ioctls:
> > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > >
> > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Control ioctls:
> > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > >
> > > > > > > > > Format ioctls:
> > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > test Cropping: OK (Not Supported)
> > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > test Scaling: OK
> > > > > > > > >
> > > > > > > > > Codec ioctls:
> > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Buffer ioctls:
> > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Total for neoisp device /dev/video3: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > Warnings: 0
> > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > Compliance test for neoisp device /dev/video4:
> > > > > > > > >
> > > > > > > > > Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Card type : neoisp
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > Video Capture Multiplanar
> > > > > > > > > Video Output Multiplanar
> > > > > > > > > Metadata Capture
> > > > > > > > > Metadata Output
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Device Capabilities
> > > > > > > > > Device Caps : 0x04201000
> > > > > > > > > Video Capture Multiplanar
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Media Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Model : neoisp
> > > > > > > > > Serial :
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Media version : 6.19.0
> > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Interface Info:
> > > > > > > > > ID : 0x03000022
> > > > > > > > > Type : V4L Video
> > > > > > > > > Entity Info:
> > > > > > > > > ID : 0x00000020 (32)
> > > > > > > > > Name : neoisp-ir
> > > > > > > > > Function : V4L2 I/O
> > > > > > > > > Pad 0x01000021 : 0: Sink
> > > > > > > > > Link 0x02000024: from remote pad 0x1000006 of entity
> > > > > > > > > 'neoisp' (Image Signal Processor): Data
> > > > > > > > >
> > > > > > > > > Required ioctls:
> > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test invalid ioctls: OK
> > > > > > > > >
> > > > > > > > > Allow for multiple opens:
> > > > > > > > > test second /dev/video4 open: OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > test for unlimited opens: OK
> > > > > > > > >
> > > > > > > > > Debug ioctls:
> > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Input ioctls:
> > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > >
> > > > > > > > > Output ioctls:
> > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > >
> > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Control ioctls:
> > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > >
> > > > > > > > > Format ioctls:
> > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > test Cropping: OK (Not Supported)
> > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > test Scaling: OK
> > > > > > > > >
> > > > > > > > > Codec ioctls:
> > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Buffer ioctls:
> > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Total for neoisp device /dev/video4: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > Warnings: 0
> > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > Compliance test for neoisp device /dev/video5:
> > > > > > > > >
> > > > > > > > > Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Card type : neoisp
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > Video Capture Multiplanar
> > > > > > > > > Video Output Multiplanar
> > > > > > > > > Metadata Capture
> > > > > > > > > Metadata Output
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Device Capabilities
> > > > > > > > > Device Caps : 0x04a00000
> > > > > > > > > Metadata Capture
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Media Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Model : neoisp
> > > > > > > > > Serial :
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Media version : 6.19.0
> > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Interface Info:
> > > > > > > > > ID : 0x03000028
> > > > > > > > > Type : V4L Video
> > > > > > > > > Entity Info:
> > > > > > > > > ID : 0x00000026 (38)
> > > > > > > > > Name : neoisp-stats
> > > > > > > > > Function : V4L2 I/O
> > > > > > > > > Pad 0x01000027 : 0: Sink
> > > > > > > > > Link 0x0200002a: from remote pad 0x1000007 of entity
> > > > > > > > > 'neoisp' (Image Signal Processor): Data, Enabled
> > > > > > > > >
> > > > > > > > > Required ioctls:
> > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test invalid ioctls: OK
> > > > > > > > >
> > > > > > > > > Allow for multiple opens:
> > > > > > > > > test second /dev/video5 open: OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > test for unlimited opens: OK
> > > > > > > > >
> > > > > > > > > Debug ioctls:
> > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Input ioctls:
> > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > >
> > > > > > > > > Output ioctls:
> > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > >
> > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Control ioctls:
> > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > >
> > > > > > > > > Format ioctls:
> > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > test Cropping: OK (Not Supported)
> > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > test Scaling: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Codec ioctls:
> > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Buffer ioctls:
> > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Total for neoisp device /dev/video5: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > Warnings: 0
> > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > Compliance test for neoisp device /dev/v4l-subdev0:
> > > > > > > > >
> > > > > > > > > Driver Info:
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Capabilities : 0x00000000
> > > > > > > > > Client Capabilities: 0x0000000000000002
> > > > > > > > > interval-uses-which Media Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Model : neoisp
> > > > > > > > > Serial :
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Media version : 6.19.0
> > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Interface Info:
> > > > > > > > > ID : 0x0300002c
> > > > > > > > > Type : V4L Sub-Device
> > > > > > > > > Entity Info:
> > > > > > > > > ID : 0x00000001 (1)
> > > > > > > > > Name : neoisp
> > > > > > > > > Function : Image Signal Processor
> > > > > > > > > Pad 0x01000002 : 0: Sink
> > > > > > > > > Link 0x0200000c: from remote pad 0x1000009 of entity
> > > > > > > > > 'neoisp-input0' (V4L2 I/O): Data, Enabled, Immutable
> > > > > > > > > Pad 0x01000003 : 1: Sink
> > > > > > > > > Link 0x02000012: from remote pad 0x100000f of entity
> > > > > > > > > 'neoisp-input1' (V4L2 I/O): Data
> > > > > > > > > Pad 0x01000004 : 2: Sink
> > > > > > > > > Link 0x02000018: from remote pad 0x1000015 of entity
> > > > > > > > > 'neoisp-params' (V4L2 I/O): Data, Enabled
> > > > > > > > > Pad 0x01000005 : 3: Source
> > > > > > > > > Link 0x0200001e: to remote pad 0x100001b of entity 'neoisp-
> > > > > > > > > frame' (V4L2 I/O): Data, Enabled
> > > > > > > > > Pad 0x01000006 : 4: Source
> > > > > > > > > Link 0x02000024: to remote pad 0x1000021 of entity 'neoisp-
> > > > > > > > > ir' (V4L2 I/O): Data
> > > > > > > > > Pad 0x01000007 : 5: Source
> > > > > > > > > Link 0x0200002a: to remote pad 0x1000027 of entity 'neoisp-
> > > > > > > > > stats' (V4L2 I/O): Data, Enabled
> > > > > > > > >
> > > > > > > > > Required ioctls:
> > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > test VIDIOC_SUDBEV_QUERYCAP: OK
> > > > > > > > > test invalid ioctls: OK
> > > > > > > > >
> > > > > > > > > Allow for multiple opens:
> > > > > > > > > test second /dev/v4l-subdev0 open: OK
> > > > > > > > > test VIDIOC_SUBDEV_QUERYCAP: OK
> > > > > > > > > test for unlimited opens: OK
> > > > > > > > >
> > > > > > > > > Debug ioctls:
> > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Input ioctls:
> > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > >
> > > > > > > > > Output ioctls:
> > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > >
> > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Sub-Device ioctls (Sink Pad 0):
> > > > > > > > > Try Stream 0
> > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > Active Stream 0
> > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Sub-Device ioctls (Sink Pad 1):
> > > > > > > > > Try Stream 0
> > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > Active Stream 0
> > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Sub-Device ioctls (Sink Pad 2):
> > > > > > > > > Try Stream 0
> > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > Active Stream 0
> > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Sub-Device ioctls (Source Pad 3):
> > > > > > > > > Try Stream 0
> > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > Active Stream 0
> > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Sub-Device ioctls (Source Pad 4):
> > > > > > > > > Try Stream 0
> > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > Active Stream 0
> > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Sub-Device ioctls (Source Pad 5):
> > > > > > > > > Try Stream 0
> > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > Active Stream 0
> > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Control ioctls:
> > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
> > > > > > > > > test VIDIOC_QUERYCTRL: OK
> > > > > > > > > test VIDIOC_G/S_CTRL: OK
> > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK
> > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
> > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > Standard Controls: 1 Private Controls: 1
> > > > > > > > >
> > > > > > > > > Format ioctls:
> > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not
> > > > > > > > > Supported)
> > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FMT: OK (Not Supported)
> > > > > > > > > test VIDIOC_TRY_FMT: OK (Not Supported)
> > > > > > > > > test VIDIOC_S_FMT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > test Cropping: OK (Not Supported)
> > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > test Scaling: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Codec ioctls:
> > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Buffer ioctls:
> > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK (Not Supported)
> > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > test VIDIOC_EXPBUF: OK (Not Supported)
> > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Total for neoisp device /dev/v4l-subdev0: 88, Succeeded: 88, Failed:
> > > > > > > > > 0, Warnings: 0
> > > > > > > > >
> > > > > > > > > Grand Total for neoisp device /dev/media0: 384, Succeeded: 384,
> > > > > > > > > Failed: 0, Warnings: 0
> > > > > > > > >
> > > > > > > > > ---
> > > > > > > > > Antoine Bouyer (11):
> > > > > > > > > media: uapi: v4l2-isp: Add v4l2 ISP extensible statistics definitions
> > > > > > > > > media: v4l2-isp: Add helper function to compute extended stats size
> > > > > > > > > media: Documentation: uapi: Update V4L2 ISP for extensible stats
> > > > > > > > > media: Documentation: Add NXP neoisp driver documentation
> > > > > > > > > dt-bindings: media: Add nxp neoisp support
> > > > > > > > > media: v4l2-ctrls: Add user control base for NXP neoisp controls
> > > > > > > > > media: Add meta formats supported by NXP neoisp driver
> > > > > > > > > media: uapi: Add NXP NEOISP user interface header file
> > > > > > > > > media: platform: Add NXP Neoisp Image Signal Processor
> > > > > > > > > media: platform: neoisp: Add debugfs support
> > > > > > > > > arm64: dts: freescale: imx95: Add NXP neoisp device tree node
> > > > > > > > >
> > > > > > > > > .../admin-guide/media/nxp-neoisp-diagram.dot | 22 +
> > > > > > > > > .../admin-guide/media/nxp-neoisp.dot | 16 +
> > > > > > > > > .../admin-guide/media/nxp-neoisp.rst | 189 ++
> > > > > > > > > .../admin-guide/media/v4l-drivers.rst | 1 +
> > > > > > > > > .../devicetree/bindings/media/nxp,neoisp.yaml | 65 +
> > > > > > > > > .../userspace-api/media/v4l/meta-formats.rst | 1 +
> > > > > > > > > .../media/v4l/metafmt-nxp-neoisp.rst | 114 +
> > > > > > > > > .../userspace-api/media/v4l/v4l2-isp.rst | 42 +-
> > > > > > > > > MAINTAINERS | 9 +
> > > > > > > > > .../boot/dts/freescale/imx95-19x19-evk.dts | 4 +
> > > > > > > > > arch/arm64/boot/dts/freescale/imx95.dtsi | 11 +
> > > > > > > > > drivers/media/platform/nxp/Kconfig | 1 +
> > > > > > > > > drivers/media/platform/nxp/Makefile | 1 +
> > > > > > > > > drivers/media/platform/nxp/neoisp/Kconfig | 15 +
> > > > > > > > > drivers/media/platform/nxp/neoisp/Makefile | 8 +
> > > > > > > > > drivers/media/platform/nxp/neoisp/neoisp.h | 270 ++
> > > > > > > > > .../media/platform/nxp/neoisp/neoisp_ctx.c | 2798 +++++++++++++++++
> > > > > > > > > .../media/platform/nxp/neoisp/neoisp_ctx.h | 85 +
> > > > > > > > > .../platform/nxp/neoisp/neoisp_debugfs.c | 503 +++
> > > > > > > > > .../media/platform/nxp/neoisp/neoisp_fmt.h | 509 +++
> > > > > > > > > drivers/media/platform/nxp/neoisp/neoisp_hw.h | 577 ++++
> > > > > > > > > .../media/platform/nxp/neoisp/neoisp_main.c | 1999 ++++++++++++
> > > > > > > > > .../media/platform/nxp/neoisp/neoisp_nodes.h | 60 +
> > > > > > > > > .../media/platform/nxp/neoisp/neoisp_regs.h | 2501 +++++++++++++++
> > > > > > > > > drivers/media/v4l2-core/v4l2-ioctl.c | 4 +
> > > > > > > > > include/media/v4l2-isp.h | 13 +
> > > > > > > > > include/uapi/linux/media/nxp/nxp_neoisp.h | 1968 ++++++++++++
> > > > > > > > > include/uapi/linux/media/v4l2-isp.h | 85 +
> > > > > > > > > include/uapi/linux/v4l2-controls.h | 6 +
> > > > > > > > > include/uapi/linux/videodev2.h | 6 +
> > > > > > > > > 30 files changed, 11880 insertions(+), 3 deletions(-)
> > > > > > > > > create mode 100644 Documentation/admin-guide/media/nxp-neoisp-
> > > > > > > > > diagram.dot
> > > > > > > > > create mode 100644 Documentation/admin-guide/media/nxp-neoisp.dot
> > > > > > > > > create mode 100644 Documentation/admin-guide/media/nxp-neoisp.rst
> > > > > > > > > create mode 100644 Documentation/devicetree/bindings/media/
> > > > > > > > > nxp,neoisp.yaml
> > > > > > > > > create mode 100644 Documentation/userspace-api/media/v4l/metafmt-
> > > > > > > > > nxp-neoisp.rst
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/Kconfig
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/Makefile
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp.h
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_ctx.c
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_ctx.h
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_debugfs.c
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_fmt.h
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_hw.h
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_main.c
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_nodes.h
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_regs.h
> > > > > > > > > create mode 100644 include/uapi/linux/media/nxp/nxp_neoisp.h
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > >
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [RFC v1 00/11] Add iMX95 neoisp driver
2026-02-23 16:52 ` Jacopo Mondi
@ 2026-02-24 19:01 ` Julien Vuillaumier
2026-02-25 8:44 ` Jacopo Mondi
0 siblings, 1 reply; 14+ messages in thread
From: Julien Vuillaumier @ 2026-02-24 19:01 UTC (permalink / raw)
To: Jacopo Mondi, Sakari Ailus, Hans Verkuil,
laurent.pinchart@ideasonboard.com
Cc: Antoine Bouyer, Michael Riesch, alexi.birlinger, daniel.baluta,
peng.fan, frank.li, mchehab, robh, krzk+dt, conor+dt, shawnguo,
s.hauer, kernel, festevam, linux-kernel, linux-media, devicetree,
linux-arm-kernel, niklas soderlund, Anthony McGivern
Hello Jacopo,
On 2/23/26 17:52, Jacopo Mondi wrote:
> On Mon, Feb 23, 2026 at 01:38:20PM +0100, Julien Vuillaumier wrote:
>> On 2/5/26 10:40, Jacopo Mondi wrote:
>>> On Wed, Feb 04, 2026 at 07:30:18PM +0100, Antoine Bouyer wrote:
>>>> Le 04/02/2026 à 18:12, Jacopo Mondi a écrit :
>>>>> On Tue, Feb 03, 2026 at 07:37:34PM +0100, Jacopo Mondi wrote:
>>>>>> On Thu, Jan 29, 2026 at 12:00:24AM +0100, Michael Riesch wrote:
>>>>>>> On 1/28/26 09:17, Antoine Bouyer wrote:
>>>>>>>> On 1/26/26 10:44 AM, Michael Riesch wrote:
>>
>> <snip>
>>
>>>>>>>>> - How many media devices are registered and which driver registers it
>>>>>>>>> or them?
>>>>>>>>
>>>>>>>> That will be part of the evaluation. My initial assumption is that
>>>>>>>> neoisp would be the appropriate component to register the media device
>>>>>>>> in this mode, since ISI is not involved, and ISI currently performs the
>>>>>>>> registration in the M2M configuration.
>>>>>>
>>>>>> Isn't the ISP registering its own media graph ?
>>>>
>>>> Yes, 8 copies of ISP media graph, that can be used with the 8 output video
>>>> devices of the ISI media graph.
>>>>
>>>
>>> I suggest you do what RPi does. The mainline driver only registers one
>>> instance and they carry a little patch downstream that implements the
>>> for() loop where multiple instances are registered. Duplicating media graphs
>>> is not desirable (at least in mainline) as we can have ISPs with 256
>>> contexts, we don't want 256 media graphs.
>>>
>>> A framework level solution with proper priority handling and job
>>> scheduling is what is required and that's what the context work should
>>> end up being.
>>>
>>
>> One system use-case for the platform is the support of 8x cameras 1080p
>> 30fps using m2m operation.
>> Requiring a downstream patch to register multiple ISP instances in order to
>> support the multi-cameras use-cases may not be the preferred option.
>>
>> What would be the issue with having multiple ISP instances created by the
>> upstream driver?
>
> You would be registering a media graph instance for each supported ISP
> context, not per each ISP instance in the system, effectively
> virtualizing access your hardware resources while losing the ability
> to implement resource sharing arbitration.
Each media graph would represent a software context indeed, multiplexing
the access to a single shared hardware resource.
The resource sharing arbitration is presumably not lost but implemented
at driver level.
> By duplicating the graphs you won't be able to implement priorities
> and job scheduling at the media device level. You are now time
> multiplexing a single hardware resource but you've lost the single
> point of control where an API to manage resources allocation can be
> implemented.
> > As the media subsystem is also growing towards a "media device
> centric" API for several reasons, including reducing the number of
> ioctl required today to operate a Video4Linux2 camera, this approach
> goes in the opposite direction.
Having the media device framework supporting priorities and job
scheduling would certainly help with contexts handling. By then,
dropping multi-context/multi-camera use-cases on the mainline driver may
be a drastic limitation.
Supporting a downstream patch to enable multiple contexts is doable.
However, looking at the RPi case you mentioned, the relevant patch [1]
is quite significant.
[1]
https://github.com/raspberrypi/linux/commit/458f2e2644ae32ec62f25cc43f77742f69c3d581
> Also we have today ISPs with 8 and 16 context on the market, going
> forward I think it's reasonable to expect this number to grow. If we
> allow 2, 8 or 16 media graphs today why not 64 or 128 tomorrow ?
In present case, there is no arbitrary limit for the maximum number of
contexts: the limiting factors are the pixel processing bandwidth
(pixels/second) and the context switch latencies.
Thus, using smaller resolutions or lower frame rates, the system could
process a higher number of contexts indeed.
>> Alternatively, would it be an option to have some mean (device tree, module
>> param...) to configure the number of media graph instances created by the
>> driver?
>
> Do you mean having a way to modify the driver behaviour to register
> multiple media devices in case one wants to without changing the
> driver code ?
>
> If we're talking mainline, I hardly see this being accepted as a dt
> property. A module parameter I'm not sure. I wouldn't like the idea
> much as it would effectively allow working around a limitation instead
> of trying to achieve a proper solution at the framework level, with
> the result that we'll never get past the current technical debt.
Those were speculative options to configure the mainline driver in order
to limit the default number of media graph created, while still
providing some multi-context support.
But, as I understand, the main concern may not be the number of media
graphs created, but more the fact that the driver implements locally the
jobs priority and scheduling policies, whereas such service will be made
available from the media framework.
Thanks for your feedback.
Best Regards,
Julien
>
> You might want to check with others as well, specifically Sakari
> Laurent and Hans, they might have different opinions of course.
>
> (I've cc-ed them).
>
> Thanks
> j
>
>>
>> Thanks,
>> Julien
>>
>>>>>>
>>>>>> Can we get a copy of all media graphs on an i.MX95 system including
>>>>>> the ISI and the CSI-2 receiver ?
>>>>
>>>> Here is an example with multiple sensors. Or do you need it in another
>>>> format ?
>>>
>>> No it's fine, thanks!
>>>
>>>>
>>>>
>>>> digraph board {
>>>> rankdir=TB
>>>> n00000001 [label="{{<port0> 0 | <port1> 1 | <port2> 2 | <port3> 3 |
>>>> <port4> 4} | crossbar\n/dev/v4l-subdev8 | {<port5> 5 | <port6> 6 | <port7> 7
>>>> | <port8> 8 | <port9> 9 | <port10> 10 | <port11> 11 | <port12> 12}}",
>>>> shape=Mrecord, style=filled, fillcolor=green]
>>>> n00000001:port5 -> n0000000f:port0 [style=bold]
>>>> n00000001:port6 -> n0000001a:port0 [style=bold]
>>>> n00000001:port7 -> n00000025:port0 [style=bold]
>>>> n00000001:port8 -> n00000030:port0 [style=bold]
>>>> n00000001:port9 -> n0000003b:port0 [style=bold]
>>>> n00000001:port10 -> n00000046:port0 [style=bold]
>>>> n00000001:port11 -> n00000051:port0 [style=bold]
>>>> n00000001:port12 -> n0000005c:port0 [style=bold]
>>>> n0000000f [label="{{<port0> 0} | mxc_isi.0\n/dev/v4l-subdev9 |
>>>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n0000000f:port1 -> n00000012 [style=bold]
>>>> n00000012 [label="mxc_isi.0.capture\n/dev/video8", shape=box,
>>>> style=filled, fillcolor=yellow]
>>>> n0000001a [label="{{<port0> 0} | mxc_isi.1\n/dev/v4l-subdev10 |
>>>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n0000001a:port1 -> n0000001d [style=bold]
>>>> n0000001d [label="mxc_isi.1.capture\n/dev/video9", shape=box,
>>>> style=filled, fillcolor=yellow]
>>>> n00000025 [label="{{<port0> 0} | mxc_isi.2\n/dev/v4l-subdev11 |
>>>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n00000025:port1 -> n00000028 [style=bold]
>>>> n00000028 [label="mxc_isi.2.capture\n/dev/video10", shape=box,
>>>> style=filled, fillcolor=yellow]
>>>> n00000030 [label="{{<port0> 0} | mxc_isi.3\n/dev/v4l-subdev12 |
>>>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n00000030:port1 -> n00000033 [style=bold]
>>>> n00000033 [label="mxc_isi.3.capture\n/dev/video13", shape=box,
>>>> style=filled, fillcolor=yellow]
>>>> n0000003b [label="{{<port0> 0} | mxc_isi.4\n/dev/v4l-subdev13 |
>>>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n0000003b:port1 -> n0000003e [style=bold]
>>>> n0000003e [label="mxc_isi.4.capture\n/dev/video14", shape=box,
>>>> style=filled, fillcolor=yellow]
>>>> n00000046 [label="{{<port0> 0} | mxc_isi.5\n/dev/v4l-subdev14 |
>>>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n00000046:port1 -> n00000049 [style=bold]
>>>> n00000049 [label="mxc_isi.5.capture\n/dev/video21", shape=box,
>>>> style=filled, fillcolor=yellow]
>>>> n00000051 [label="{{<port0> 0} | mxc_isi.6\n/dev/v4l-subdev15 |
>>>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n00000051:port1 -> n00000054 [style=bold]
>>>> n00000054 [label="mxc_isi.6.capture\n/dev/video22", shape=box,
>>>> style=filled, fillcolor=yellow]
>>>> n0000005c [label="{{<port0> 0} | mxc_isi.7\n/dev/v4l-subdev16 |
>>>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n0000005c:port1 -> n0000005f [style=bold]
>>>> n0000005f [label="mxc_isi.7.capture\n/dev/video23", shape=box,
>>>> style=filled, fillcolor=yellow]
>>>> n00000067 [label="mxc_isi.output\n", shape=box, style=filled,
>>>> fillcolor=yellow]
>>>> n00000067 -> n00000001:port4 [style=bold]
>>>> n0000006e [label="{{<port0> 0} |
>>>> 4ac10000.syscon:formatter@20\n/dev/v4l-subdev17 | {<port1> 1}}",
>>>> shape=Mrecord, style=filled, fillcolor=green]
>>>> n0000006e:port1 -> n00000001:port2 [style=bold]
>>>> n00000073 [label="{{<port0> 0} |
>>>> csidev-4ad30000.csi\n/dev/v4l-subdev18 | {<port1> 1}}", shape=Mrecord,
>>>> style=filled, fillcolor=green]
>>>> n00000073:port1 -> n0000006e:port0 [style=bold]
>>>> n00000078 [label="{{<port0> 0 | <port1> 1 | <port2> 2 | <port3> 3} |
>>>> max96724 2-0027\n/dev/v4l-subdev19 | {<port4> 4 | <port5> 5}}",
>>>> shape=Mrecord, style=filled, fillcolor=green]
>>>> n00000078:port4 -> n00000073:port0 [style=dashed]
>>>> n00000081 [label="{{} | mx95mbcam 8-0040\n/dev/v4l-subdev20 |
>>>> {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n00000081:port0 -> n00000078:port0 [style=bold]
>>>> n00000085 [label="{{} | mx95mbcam 9-0040\n/dev/v4l-subdev21 |
>>>> {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n00000085:port0 -> n00000078:port1 [style=bold]
>>>> n00000089 [label="{{} | mx95mbcam 10-0040\n/dev/v4l-subdev22 |
>>>> {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n00000089:port0 -> n00000078:port2 [style=bold]
>>>> n0000008d [label="{{} | mx95mbcam 11-0040\n/dev/v4l-subdev23 |
>>>> {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n0000008d:port0 -> n00000078:port3 [style=bold]
>>>> }
>>>>
>>>>
>>>>>>
>>>>>> If I'm not mistaken you'll have 8 copies of the ISP media graphs, and
>>>>>> that's exactly what we're working on with the context framework :)
>>>>>>
>>>>
>>>> Ok. Then I should have a look to context framework too ...
>>>>
>>>
>>> Please, I hope to be able to resume working on it sooner or later
>>> given the right use case.
>>>
>>>>>>
>>>>>>>
>>>>>>> ... since it is not, your assumption seems very reasonable.
>>>>>>>
>>>>>>>>
>>>>>>>>> - How can the user decide whether direct (csi2isp) or indirect
>>>>>>>>> (mem2mem) streaming shall be used?
>>>>>>>>
>>>>>>>> That will also be part of the evaluation. From dts would be my first
>>>>>>>> option, but may prevent using both modes on same platform then.
>>>>>>>
>>>>>>> Of course this depends what the hardware is able to do, but in case the
>>>>>>> HW is reconfigurable easily, I doubt that device tree is a good choice
>>>>>>> to solve that.
>>>>>>>>
>>>>>>>>>
>>>>>>>>> While it is certainly OK to introduce this support only at a later
>>>>>>>>> stage, it makes sense to consider this right from the start to avoid
>>>>>>>>> some nasty changes e.g. in how this hardware is exposed to user space.
>>>>>>>>>
>>>>>>>>> Also, we are facing a similiar challenge with recent Rockchip ISP
>>>>>>>>> hardware (RK3588, RK3576, ...) and it would be great to hear your
>>>>>>>>> thoughts about that.
>>>>>>>>
>>>>>>>> Is there an existing discussion thread available on this topic? I would
>>>>>>>> be very interested in following it.
>>>>>>>
>>>>>>> Not yet, I am afraid. But there should be one or two soon (TM) :-)
>>>>>>
>>>>>> It's probably time to have one :)
>>>>
>>>> Good. Please loop me in ;)
>>>
>>> You are in, this is the conversation ;)
>>>
>>> It might be a good discussion point for the media summit in Nice
>>> co-located with Embedded Recipes if people with interest in the topic
>>> will going the be there.
>>>
>>> I'm also adding Anthony from ARM as I know he's going through the same
>>> inline/m2m duality you're now facing.
>>>
>>> Thanks
>>> j
>>>
>>>>
>>>> BR
>>>> Antoine
>>>>
>>>>>>
>>>>>>>
>>>>>>> Thanks and regards,
>>>>>>> Michael
>>>>>>>
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>> Antoine
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks in advance and best regards,
>>>>>>>>> Michael
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> This series is posted as RFC because extending the v4l2-isp interface
>>>>>>>>>> may
>>>>>>>>>> overlap with ongoing work. If similar development already exists, I am
>>>>>>>>>> happy to rebase or adapt the series accordingly. If preferred, the
>>>>>>>>>> series
>>>>>>>>>> can also be split into two parts: the v4l2-isp rework and the Neo ISP
>>>>>>>>>> driver introduction.
>>>>>>>>>>
>>>>>>>>>> A few checkpatch warnings in v4l2-ioctl.c remain intentionally to stay
>>>>>>>>>> consistent with the existing style in that file.
>>>>>>>>>>
>>>>>>>>>> Testing was performed on the i.MX95 EVK using the media/next kernel in
>>>>>>>>>> standalone M2M mode. End-to-end camera-to-ISP capture has been validated
>>>>>>>>>> using the downstream NXP kernel, as some hardware dependencies are not
>>>>>>>>>> yet upstreamed.
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Antoine
>>>>>>>>>>
>>>>>>>>>> ---
>>>>>>>>>> Here are v4l2-compliance test results:
>>>>>>>>>>
>>>>>>>>>> v4l2-compliance 1.28.1-5233, 64 bits, 64-bit time_t
>>>>>>>>>> v4l2-compliance SHA: fc15e229d9d3 2024-07-23 19:22:15
>>>>>>>>>>
>>>>>>>>>> Compliance test for neoisp device /dev/media0:
>>>>>>>>>>
>>>>>>>>>> Media Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Model : neoisp
>>>>>>>>>> Serial :
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Media version : 6.19.0
>>>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>>>> Driver version : 6.19.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:
>>>>>>>>>> test MEDIA_IOC_G_TOPOLOGY: OK
>>>>>>>>>> Entities: 7 Interfaces: 7 Pads: 12 Links: 13
>>>>>>>>>> test MEDIA_IOC_ENUM_ENTITIES/LINKS: OK
>>>>>>>>>> test MEDIA_IOC_SETUP_LINK: OK
>>>>>>>>>>
>>>>>>>>>> Total for neoisp device /dev/media0: 8, Succeeded: 8, Failed: 0,
>>>>>>>>>> Warnings: 0
>>>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>>>> Compliance test for neoisp device /dev/video0:
>>>>>>>>>>
>>>>>>>>>> Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Card type : neoisp
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>>>> Video Capture Multiplanar
>>>>>>>>>> Video Output Multiplanar
>>>>>>>>>> Metadata Capture
>>>>>>>>>> Metadata Output
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Device Capabilities
>>>>>>>>>> Device Caps : 0x04202000
>>>>>>>>>> Video Output Multiplanar
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Media Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Model : neoisp
>>>>>>>>>> Serial :
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Media version : 6.19.0
>>>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Interface Info:
>>>>>>>>>> ID : 0x0300000a
>>>>>>>>>> Type : V4L Video
>>>>>>>>>> Entity Info:
>>>>>>>>>> ID : 0x00000008 (8)
>>>>>>>>>> Name : neoisp-input0
>>>>>>>>>> Function : V4L2 I/O
>>>>>>>>>> Pad 0x01000009 : 0: Source
>>>>>>>>>> Link 0x0200000c: to remote pad 0x1000002 of entity
>>>>>>>>>> 'neoisp' (Image Signal Processor): Data, Enabled, Immutable
>>>>>>>>>>
>>>>>>>>>> Required ioctls:
>>>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test invalid ioctls: OK
>>>>>>>>>>
>>>>>>>>>> Allow for multiple opens:
>>>>>>>>>> test second /dev/video0 open: OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>>>> test for unlimited opens: OK
>>>>>>>>>>
>>>>>>>>>> Debug ioctls:
>>>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Input ioctls:
>>>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>>>
>>>>>>>>>> Output ioctls:
>>>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>>>
>>>>>>>>>> Input/Output configuration ioctls:
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Control ioctls:
>>>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>>>
>>>>>>>>>> Format ioctls:
>>>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>>>> test Cropping: OK
>>>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>>>> test Scaling: OK
>>>>>>>>>>
>>>>>>>>>> Codec ioctls:
>>>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Buffer ioctls:
>>>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Total for neoisp device /dev/video0: 48, Succeeded: 48, Failed: 0,
>>>>>>>>>> Warnings: 0
>>>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>>>> Compliance test for neoisp device /dev/video1:
>>>>>>>>>>
>>>>>>>>>> Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Card type : neoisp
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>>>> Video Capture Multiplanar
>>>>>>>>>> Video Output Multiplanar
>>>>>>>>>> Metadata Capture
>>>>>>>>>> Metadata Output
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Device Capabilities
>>>>>>>>>> Device Caps : 0x04202000
>>>>>>>>>> Video Output Multiplanar
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Media Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Model : neoisp
>>>>>>>>>> Serial :
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Media version : 6.19.0
>>>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Interface Info:
>>>>>>>>>> ID : 0x03000010
>>>>>>>>>> Type : V4L Video
>>>>>>>>>> Entity Info:
>>>>>>>>>> ID : 0x0000000e (14)
>>>>>>>>>> Name : neoisp-input1
>>>>>>>>>> Function : V4L2 I/O
>>>>>>>>>> Pad 0x0100000f : 0: Source
>>>>>>>>>> Link 0x02000012: to remote pad 0x1000003 of entity
>>>>>>>>>> 'neoisp' (Image Signal Processor): Data
>>>>>>>>>>
>>>>>>>>>> Required ioctls:
>>>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test invalid ioctls: OK
>>>>>>>>>>
>>>>>>>>>> Allow for multiple opens:
>>>>>>>>>> test second /dev/video1 open: OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>>>> test for unlimited opens: OK
>>>>>>>>>>
>>>>>>>>>> Debug ioctls:
>>>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Input ioctls:
>>>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>>>
>>>>>>>>>> Output ioctls:
>>>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>>>
>>>>>>>>>> Input/Output configuration ioctls:
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Control ioctls:
>>>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>>>
>>>>>>>>>> Format ioctls:
>>>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>>>> test Cropping: OK
>>>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>>>> test Scaling: OK
>>>>>>>>>>
>>>>>>>>>> Codec ioctls:
>>>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Buffer ioctls:
>>>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Total for neoisp device /dev/video1: 48, Succeeded: 48, Failed: 0,
>>>>>>>>>> Warnings: 0
>>>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>>>> Compliance test for neoisp device /dev/video2:
>>>>>>>>>>
>>>>>>>>>> Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Card type : neoisp
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>>>> Video Capture Multiplanar
>>>>>>>>>> Video Output Multiplanar
>>>>>>>>>> Metadata Capture
>>>>>>>>>> Metadata Output
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Device Capabilities
>>>>>>>>>> Device Caps : 0x0c200000
>>>>>>>>>> Metadata Output
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Media Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Model : neoisp
>>>>>>>>>> Serial :
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Media version : 6.19.0
>>>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Interface Info:
>>>>>>>>>> ID : 0x03000016
>>>>>>>>>> Type : V4L Video
>>>>>>>>>> Entity Info:
>>>>>>>>>> ID : 0x00000014 (20)
>>>>>>>>>> Name : neoisp-params
>>>>>>>>>> Function : V4L2 I/O
>>>>>>>>>> Pad 0x01000015 : 0: Source
>>>>>>>>>> Link 0x02000018: to remote pad 0x1000004 of entity
>>>>>>>>>> 'neoisp' (Image Signal Processor): Data, Enabled
>>>>>>>>>>
>>>>>>>>>> Required ioctls:
>>>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test invalid ioctls: OK
>>>>>>>>>>
>>>>>>>>>> Allow for multiple opens:
>>>>>>>>>> test second /dev/video2 open: OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>>>> test for unlimited opens: OK
>>>>>>>>>>
>>>>>>>>>> Debug ioctls:
>>>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Input ioctls:
>>>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>>>
>>>>>>>>>> Output ioctls:
>>>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>>>
>>>>>>>>>> Input/Output configuration ioctls:
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Control ioctls:
>>>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>>>
>>>>>>>>>> Format ioctls:
>>>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>>>> test Cropping: OK (Not Supported)
>>>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>>>> test Scaling: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Codec ioctls:
>>>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Buffer ioctls:
>>>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Total for neoisp device /dev/video2: 48, Succeeded: 48, Failed: 0,
>>>>>>>>>> Warnings: 0
>>>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>>>> Compliance test for neoisp device /dev/video3:
>>>>>>>>>>
>>>>>>>>>> Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Card type : neoisp
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>>>> Video Capture Multiplanar
>>>>>>>>>> Video Output Multiplanar
>>>>>>>>>> Metadata Capture
>>>>>>>>>> Metadata Output
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Device Capabilities
>>>>>>>>>> Device Caps : 0x04201000
>>>>>>>>>> Video Capture Multiplanar
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Media Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Model : neoisp
>>>>>>>>>> Serial :
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Media version : 6.19.0
>>>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Interface Info:
>>>>>>>>>> ID : 0x0300001c
>>>>>>>>>> Type : V4L Video
>>>>>>>>>> Entity Info:
>>>>>>>>>> ID : 0x0000001a (26)
>>>>>>>>>> Name : neoisp-frame
>>>>>>>>>> Function : V4L2 I/O
>>>>>>>>>> Pad 0x0100001b : 0: Sink
>>>>>>>>>> Link 0x0200001e: from remote pad 0x1000005 of entity
>>>>>>>>>> 'neoisp' (Image Signal Processor): Data, Enabled
>>>>>>>>>>
>>>>>>>>>> Required ioctls:
>>>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test invalid ioctls: OK
>>>>>>>>>>
>>>>>>>>>> Allow for multiple opens:
>>>>>>>>>> test second /dev/video3 open: OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>>>> test for unlimited opens: OK
>>>>>>>>>>
>>>>>>>>>> Debug ioctls:
>>>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Input ioctls:
>>>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>>>
>>>>>>>>>> Output ioctls:
>>>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>>>
>>>>>>>>>> Input/Output configuration ioctls:
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Control ioctls:
>>>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>>>
>>>>>>>>>> Format ioctls:
>>>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>>>> test Cropping: OK (Not Supported)
>>>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>>>> test Scaling: OK
>>>>>>>>>>
>>>>>>>>>> Codec ioctls:
>>>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Buffer ioctls:
>>>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Total for neoisp device /dev/video3: 48, Succeeded: 48, Failed: 0,
>>>>>>>>>> Warnings: 0
>>>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>>>> Compliance test for neoisp device /dev/video4:
>>>>>>>>>>
>>>>>>>>>> Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Card type : neoisp
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>>>> Video Capture Multiplanar
>>>>>>>>>> Video Output Multiplanar
>>>>>>>>>> Metadata Capture
>>>>>>>>>> Metadata Output
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Device Capabilities
>>>>>>>>>> Device Caps : 0x04201000
>>>>>>>>>> Video Capture Multiplanar
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Media Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Model : neoisp
>>>>>>>>>> Serial :
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Media version : 6.19.0
>>>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Interface Info:
>>>>>>>>>> ID : 0x03000022
>>>>>>>>>> Type : V4L Video
>>>>>>>>>> Entity Info:
>>>>>>>>>> ID : 0x00000020 (32)
>>>>>>>>>> Name : neoisp-ir
>>>>>>>>>> Function : V4L2 I/O
>>>>>>>>>> Pad 0x01000021 : 0: Sink
>>>>>>>>>> Link 0x02000024: from remote pad 0x1000006 of entity
>>>>>>>>>> 'neoisp' (Image Signal Processor): Data
>>>>>>>>>>
>>>>>>>>>> Required ioctls:
>>>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test invalid ioctls: OK
>>>>>>>>>>
>>>>>>>>>> Allow for multiple opens:
>>>>>>>>>> test second /dev/video4 open: OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>>>> test for unlimited opens: OK
>>>>>>>>>>
>>>>>>>>>> Debug ioctls:
>>>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Input ioctls:
>>>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>>>
>>>>>>>>>> Output ioctls:
>>>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>>>
>>>>>>>>>> Input/Output configuration ioctls:
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Control ioctls:
>>>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>>>
>>>>>>>>>> Format ioctls:
>>>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>>>> test Cropping: OK (Not Supported)
>>>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>>>> test Scaling: OK
>>>>>>>>>>
>>>>>>>>>> Codec ioctls:
>>>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Buffer ioctls:
>>>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Total for neoisp device /dev/video4: 48, Succeeded: 48, Failed: 0,
>>>>>>>>>> Warnings: 0
>>>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>>>> Compliance test for neoisp device /dev/video5:
>>>>>>>>>>
>>>>>>>>>> Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Card type : neoisp
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>>>> Video Capture Multiplanar
>>>>>>>>>> Video Output Multiplanar
>>>>>>>>>> Metadata Capture
>>>>>>>>>> Metadata Output
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Device Capabilities
>>>>>>>>>> Device Caps : 0x04a00000
>>>>>>>>>> Metadata Capture
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Media Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Model : neoisp
>>>>>>>>>> Serial :
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Media version : 6.19.0
>>>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Interface Info:
>>>>>>>>>> ID : 0x03000028
>>>>>>>>>> Type : V4L Video
>>>>>>>>>> Entity Info:
>>>>>>>>>> ID : 0x00000026 (38)
>>>>>>>>>> Name : neoisp-stats
>>>>>>>>>> Function : V4L2 I/O
>>>>>>>>>> Pad 0x01000027 : 0: Sink
>>>>>>>>>> Link 0x0200002a: from remote pad 0x1000007 of entity
>>>>>>>>>> 'neoisp' (Image Signal Processor): Data, Enabled
>>>>>>>>>>
>>>>>>>>>> Required ioctls:
>>>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test invalid ioctls: OK
>>>>>>>>>>
>>>>>>>>>> Allow for multiple opens:
>>>>>>>>>> test second /dev/video5 open: OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>>>> test for unlimited opens: OK
>>>>>>>>>>
>>>>>>>>>> Debug ioctls:
>>>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Input ioctls:
>>>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>>>
>>>>>>>>>> Output ioctls:
>>>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>>>
>>>>>>>>>> Input/Output configuration ioctls:
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Control ioctls:
>>>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>>>
>>>>>>>>>> Format ioctls:
>>>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>>>> test Cropping: OK (Not Supported)
>>>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>>>> test Scaling: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Codec ioctls:
>>>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Buffer ioctls:
>>>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Total for neoisp device /dev/video5: 48, Succeeded: 48, Failed: 0,
>>>>>>>>>> Warnings: 0
>>>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>>>> Compliance test for neoisp device /dev/v4l-subdev0:
>>>>>>>>>>
>>>>>>>>>> Driver Info:
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Capabilities : 0x00000000
>>>>>>>>>> Client Capabilities: 0x0000000000000002
>>>>>>>>>> interval-uses-which Media Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Model : neoisp
>>>>>>>>>> Serial :
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Media version : 6.19.0
>>>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Interface Info:
>>>>>>>>>> ID : 0x0300002c
>>>>>>>>>> Type : V4L Sub-Device
>>>>>>>>>> Entity Info:
>>>>>>>>>> ID : 0x00000001 (1)
>>>>>>>>>> Name : neoisp
>>>>>>>>>> Function : Image Signal Processor
>>>>>>>>>> Pad 0x01000002 : 0: Sink
>>>>>>>>>> Link 0x0200000c: from remote pad 0x1000009 of entity
>>>>>>>>>> 'neoisp-input0' (V4L2 I/O): Data, Enabled, Immutable
>>>>>>>>>> Pad 0x01000003 : 1: Sink
>>>>>>>>>> Link 0x02000012: from remote pad 0x100000f of entity
>>>>>>>>>> 'neoisp-input1' (V4L2 I/O): Data
>>>>>>>>>> Pad 0x01000004 : 2: Sink
>>>>>>>>>> Link 0x02000018: from remote pad 0x1000015 of entity
>>>>>>>>>> 'neoisp-params' (V4L2 I/O): Data, Enabled
>>>>>>>>>> Pad 0x01000005 : 3: Source
>>>>>>>>>> Link 0x0200001e: to remote pad 0x100001b of entity 'neoisp-
>>>>>>>>>> frame' (V4L2 I/O): Data, Enabled
>>>>>>>>>> Pad 0x01000006 : 4: Source
>>>>>>>>>> Link 0x02000024: to remote pad 0x1000021 of entity 'neoisp-
>>>>>>>>>> ir' (V4L2 I/O): Data
>>>>>>>>>> Pad 0x01000007 : 5: Source
>>>>>>>>>> Link 0x0200002a: to remote pad 0x1000027 of entity 'neoisp-
>>>>>>>>>> stats' (V4L2 I/O): Data, Enabled
>>>>>>>>>>
>>>>>>>>>> Required ioctls:
>>>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>>>> test VIDIOC_SUDBEV_QUERYCAP: OK
>>>>>>>>>> test invalid ioctls: OK
>>>>>>>>>>
>>>>>>>>>> Allow for multiple opens:
>>>>>>>>>> test second /dev/v4l-subdev0 open: OK
>>>>>>>>>> test VIDIOC_SUBDEV_QUERYCAP: OK
>>>>>>>>>> test for unlimited opens: OK
>>>>>>>>>>
>>>>>>>>>> Debug ioctls:
>>>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Input ioctls:
>>>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>>>
>>>>>>>>>> Output ioctls:
>>>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>>>
>>>>>>>>>> Input/Output configuration ioctls:
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Sub-Device ioctls (Sink Pad 0):
>>>>>>>>>> Try Stream 0
>>>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> Active Stream 0
>>>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Sub-Device ioctls (Sink Pad 1):
>>>>>>>>>> Try Stream 0
>>>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> Active Stream 0
>>>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Sub-Device ioctls (Sink Pad 2):
>>>>>>>>>> Try Stream 0
>>>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> Active Stream 0
>>>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Sub-Device ioctls (Source Pad 3):
>>>>>>>>>> Try Stream 0
>>>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> Active Stream 0
>>>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Sub-Device ioctls (Source Pad 4):
>>>>>>>>>> Try Stream 0
>>>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> Active Stream 0
>>>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Sub-Device ioctls (Source Pad 5):
>>>>>>>>>> Try Stream 0
>>>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> Active Stream 0
>>>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Control ioctls:
>>>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
>>>>>>>>>> test VIDIOC_QUERYCTRL: OK
>>>>>>>>>> test VIDIOC_G/S_CTRL: OK
>>>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK
>>>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
>>>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>>>> Standard Controls: 1 Private Controls: 1
>>>>>>>>>>
>>>>>>>>>> Format ioctls:
>>>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not
>>>>>>>>>> Supported)
>>>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FMT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_TRY_FMT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_S_FMT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>>>> test Cropping: OK (Not Supported)
>>>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>>>> test Scaling: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Codec ioctls:
>>>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Buffer ioctls:
>>>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK (Not Supported)
>>>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>>>> test VIDIOC_EXPBUF: OK (Not Supported)
>>>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Total for neoisp device /dev/v4l-subdev0: 88, Succeeded: 88, Failed:
>>>>>>>>>> 0, Warnings: 0
>>>>>>>>>>
>>>>>>>>>> Grand Total for neoisp device /dev/media0: 384, Succeeded: 384,
>>>>>>>>>> Failed: 0, Warnings: 0
>>>>>>>>>>
>>>>>>>>>> ---
>>>>>>>>>> Antoine Bouyer (11):
>>>>>>>>>> media: uapi: v4l2-isp: Add v4l2 ISP extensible statistics definitions
>>>>>>>>>> media: v4l2-isp: Add helper function to compute extended stats size
>>>>>>>>>> media: Documentation: uapi: Update V4L2 ISP for extensible stats
>>>>>>>>>> media: Documentation: Add NXP neoisp driver documentation
>>>>>>>>>> dt-bindings: media: Add nxp neoisp support
>>>>>>>>>> media: v4l2-ctrls: Add user control base for NXP neoisp controls
>>>>>>>>>> media: Add meta formats supported by NXP neoisp driver
>>>>>>>>>> media: uapi: Add NXP NEOISP user interface header file
>>>>>>>>>> media: platform: Add NXP Neoisp Image Signal Processor
>>>>>>>>>> media: platform: neoisp: Add debugfs support
>>>>>>>>>> arm64: dts: freescale: imx95: Add NXP neoisp device tree node
>>>>>>>>>>
>>>>>>>>>> .../admin-guide/media/nxp-neoisp-diagram.dot | 22 +
>>>>>>>>>> .../admin-guide/media/nxp-neoisp.dot | 16 +
>>>>>>>>>> .../admin-guide/media/nxp-neoisp.rst | 189 ++
>>>>>>>>>> .../admin-guide/media/v4l-drivers.rst | 1 +
>>>>>>>>>> .../devicetree/bindings/media/nxp,neoisp.yaml | 65 +
>>>>>>>>>> .../userspace-api/media/v4l/meta-formats.rst | 1 +
>>>>>>>>>> .../media/v4l/metafmt-nxp-neoisp.rst | 114 +
>>>>>>>>>> .../userspace-api/media/v4l/v4l2-isp.rst | 42 +-
>>>>>>>>>> MAINTAINERS | 9 +
>>>>>>>>>> .../boot/dts/freescale/imx95-19x19-evk.dts | 4 +
>>>>>>>>>> arch/arm64/boot/dts/freescale/imx95.dtsi | 11 +
>>>>>>>>>> drivers/media/platform/nxp/Kconfig | 1 +
>>>>>>>>>> drivers/media/platform/nxp/Makefile | 1 +
>>>>>>>>>> drivers/media/platform/nxp/neoisp/Kconfig | 15 +
>>>>>>>>>> drivers/media/platform/nxp/neoisp/Makefile | 8 +
>>>>>>>>>> drivers/media/platform/nxp/neoisp/neoisp.h | 270 ++
>>>>>>>>>> .../media/platform/nxp/neoisp/neoisp_ctx.c | 2798 +++++++++++++++++
>>>>>>>>>> .../media/platform/nxp/neoisp/neoisp_ctx.h | 85 +
>>>>>>>>>> .../platform/nxp/neoisp/neoisp_debugfs.c | 503 +++
>>>>>>>>>> .../media/platform/nxp/neoisp/neoisp_fmt.h | 509 +++
>>>>>>>>>> drivers/media/platform/nxp/neoisp/neoisp_hw.h | 577 ++++
>>>>>>>>>> .../media/platform/nxp/neoisp/neoisp_main.c | 1999 ++++++++++++
>>>>>>>>>> .../media/platform/nxp/neoisp/neoisp_nodes.h | 60 +
>>>>>>>>>> .../media/platform/nxp/neoisp/neoisp_regs.h | 2501 +++++++++++++++
>>>>>>>>>> drivers/media/v4l2-core/v4l2-ioctl.c | 4 +
>>>>>>>>>> include/media/v4l2-isp.h | 13 +
>>>>>>>>>> include/uapi/linux/media/nxp/nxp_neoisp.h | 1968 ++++++++++++
>>>>>>>>>> include/uapi/linux/media/v4l2-isp.h | 85 +
>>>>>>>>>> include/uapi/linux/v4l2-controls.h | 6 +
>>>>>>>>>> include/uapi/linux/videodev2.h | 6 +
>>>>>>>>>> 30 files changed, 11880 insertions(+), 3 deletions(-)
>>>>>>>>>> create mode 100644 Documentation/admin-guide/media/nxp-neoisp-
>>>>>>>>>> diagram.dot
>>>>>>>>>> create mode 100644 Documentation/admin-guide/media/nxp-neoisp.dot
>>>>>>>>>> create mode 100644 Documentation/admin-guide/media/nxp-neoisp.rst
>>>>>>>>>> create mode 100644 Documentation/devicetree/bindings/media/
>>>>>>>>>> nxp,neoisp.yaml
>>>>>>>>>> create mode 100644 Documentation/userspace-api/media/v4l/metafmt-
>>>>>>>>>> nxp-neoisp.rst
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/Kconfig
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/Makefile
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp.h
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_ctx.c
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_ctx.h
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_debugfs.c
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_fmt.h
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_hw.h
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_main.c
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_nodes.h
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_regs.h
>>>>>>>>>> create mode 100644 include/uapi/linux/media/nxp/nxp_neoisp.h
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [RFC v1 00/11] Add iMX95 neoisp driver
2026-02-24 19:01 ` Julien Vuillaumier
@ 2026-02-25 8:44 ` Jacopo Mondi
0 siblings, 0 replies; 14+ messages in thread
From: Jacopo Mondi @ 2026-02-25 8:44 UTC (permalink / raw)
To: Julien Vuillaumier
Cc: Jacopo Mondi, Sakari Ailus, Hans Verkuil,
laurent.pinchart@ideasonboard.com, Antoine Bouyer, Michael Riesch,
alexi.birlinger, daniel.baluta, peng.fan, frank.li, mchehab, robh,
krzk+dt, conor+dt, shawnguo, s.hauer, kernel, festevam,
linux-kernel, linux-media, devicetree, linux-arm-kernel,
niklas soderlund, Anthony McGivern
Hi Julien
On Tue, Feb 24, 2026 at 08:01:53PM +0100, Julien Vuillaumier wrote:
> Hello Jacopo,
>
> On 2/23/26 17:52, Jacopo Mondi wrote:
> > On Mon, Feb 23, 2026 at 01:38:20PM +0100, Julien Vuillaumier wrote:
> > > On 2/5/26 10:40, Jacopo Mondi wrote:
> > > > On Wed, Feb 04, 2026 at 07:30:18PM +0100, Antoine Bouyer wrote:
> > > > > Le 04/02/2026 à 18:12, Jacopo Mondi a écrit :
> > > > > > On Tue, Feb 03, 2026 at 07:37:34PM +0100, Jacopo Mondi wrote:
> > > > > > > On Thu, Jan 29, 2026 at 12:00:24AM +0100, Michael Riesch wrote:
> > > > > > > > On 1/28/26 09:17, Antoine Bouyer wrote:
> > > > > > > > > On 1/26/26 10:44 AM, Michael Riesch wrote:
> > >
> > > <snip>
> > >
> > > > > > > > > > - How many media devices are registered and which driver registers it
> > > > > > > > > > or them?
> > > > > > > > >
> > > > > > > > > That will be part of the evaluation. My initial assumption is that
> > > > > > > > > neoisp would be the appropriate component to register the media device
> > > > > > > > > in this mode, since ISI is not involved, and ISI currently performs the
> > > > > > > > > registration in the M2M configuration.
> > > > > > >
> > > > > > > Isn't the ISP registering its own media graph ?
> > > > >
> > > > > Yes, 8 copies of ISP media graph, that can be used with the 8 output video
> > > > > devices of the ISI media graph.
> > > > >
> > > >
> > > > I suggest you do what RPi does. The mainline driver only registers one
> > > > instance and they carry a little patch downstream that implements the
> > > > for() loop where multiple instances are registered. Duplicating media graphs
> > > > is not desirable (at least in mainline) as we can have ISPs with 256
> > > > contexts, we don't want 256 media graphs.
> > > >
> > > > A framework level solution with proper priority handling and job
> > > > scheduling is what is required and that's what the context work should
> > > > end up being.
> > > >
> > >
> > > One system use-case for the platform is the support of 8x cameras 1080p
> > > 30fps using m2m operation.
> > > Requiring a downstream patch to register multiple ISP instances in order to
> > > support the multi-cameras use-cases may not be the preferred option.
> > >
> > > What would be the issue with having multiple ISP instances created by the
> > > upstream driver?
> >
> > You would be registering a media graph instance for each supported ISP
> > context, not per each ISP instance in the system, effectively
> > virtualizing access your hardware resources while losing the ability
> > to implement resource sharing arbitration.
>
> Each media graph would represent a software context indeed, multiplexing the
> access to a single shared hardware resource.
> The resource sharing arbitration is presumably not lost but implemented at
> driver level.
>
As you correctly pointed out below, arbitration implemented in each
driver is really not desirable
> > By duplicating the graphs you won't be able to implement priorities
> > and job scheduling at the media device level. You are now time
> > multiplexing a single hardware resource but you've lost the single
> > point of control where an API to manage resources allocation can be
> > implemented.
> > > As the media subsystem is also growing towards a "media device
> > centric" API for several reasons, including reducing the number of
> > ioctl required today to operate a Video4Linux2 camera, this approach
> > goes in the opposite direction.
>
> Having the media device framework supporting priorities and job scheduling
> would certainly help with contexts handling. By then, dropping
> multi-context/multi-camera use-cases on the mainline driver may be a drastic
> limitation.
>
I know. And that's why I would be eager to move forward with context
support
> Supporting a downstream patch to enable multiple contexts is doable.
> However, looking at the RPi case you mentioned, the relevant patch [1] is
> quite significant.
>
> [1] https://github.com/raspberrypi/linux/commit/458f2e2644ae32ec62f25cc43f77742f69c3d581
>
RPi went the extra mile and correctly removed all abstractions in the
driver to implement multi-context (principally struct
pispbe_node_group).
While this make the mainline driver cleaner there might be ways to
reduce the diff size (I admit I haven't checked in detail yet driver how
multi-context is realized in your driver).
> > Also we have today ISPs with 8 and 16 context on the market, going
> > forward I think it's reasonable to expect this number to grow. If we
> > allow 2, 8 or 16 media graphs today why not 64 or 128 tomorrow ?
>
> In present case, there is no arbitrary limit for the maximum number of
> contexts: the limiting factors are the pixel processing bandwidth
> (pixels/second) and the context switch latencies.
> Thus, using smaller resolutions or lower frame rates, the system could
> process a higher number of contexts indeed.
>
Ah ok, same as the PiSP BE then.
So I presume there is no hw context handler/scheduler with a limited
number of "slots" and the 8 contexts supported by the driver are a
resonable compromise between functionalities and performances.
> > > Alternatively, would it be an option to have some mean (device tree, module
> > > param...) to configure the number of media graph instances created by the
> > > driver?
> >
> > Do you mean having a way to modify the driver behaviour to register
> > multiple media devices in case one wants to without changing the
> > driver code ?
> >
> > If we're talking mainline, I hardly see this being accepted as a dt
> > property. A module parameter I'm not sure. I wouldn't like the idea
> > much as it would effectively allow working around a limitation instead
> > of trying to achieve a proper solution at the framework level, with
> > the result that we'll never get past the current technical debt.
>
> Those were speculative options to configure the mainline driver in order to
> limit the default number of media graph created, while still providing some
> multi-context support.
>
> But, as I understand, the main concern may not be the number of media graphs
> created, but more the fact that the driver implements locally the jobs
> priority and scheduling policies, whereas such service will be made
> available from the media framework.
I think both are valid concerns, but to me having context support at
the framework level is the main one, yes.
>
> Thanks for your feedback.
Thank you, I guess if we move forward with the topology discussion you
can probably already start planning a v2 ?
Thanks
j
>
> Best Regards,
> Julien
>
> >
> > You might want to check with others as well, specifically Sakari
> > Laurent and Hans, they might have different opinions of course.
> >
> > (I've cc-ed them).
> >
> > Thanks
> > j
> >
> > >
> > > Thanks,
> > > Julien
> > >
> > > > > > >
> > > > > > > Can we get a copy of all media graphs on an i.MX95 system including
> > > > > > > the ISI and the CSI-2 receiver ?
> > > > >
> > > > > Here is an example with multiple sensors. Or do you need it in another
> > > > > format ?
> > > >
> > > > No it's fine, thanks!
> > > >
> > > > >
> > > > >
> > > > > digraph board {
> > > > > rankdir=TB
> > > > > n00000001 [label="{{<port0> 0 | <port1> 1 | <port2> 2 | <port3> 3 |
> > > > > <port4> 4} | crossbar\n/dev/v4l-subdev8 | {<port5> 5 | <port6> 6 | <port7> 7
> > > > > | <port8> 8 | <port9> 9 | <port10> 10 | <port11> 11 | <port12> 12}}",
> > > > > shape=Mrecord, style=filled, fillcolor=green]
> > > > > n00000001:port5 -> n0000000f:port0 [style=bold]
> > > > > n00000001:port6 -> n0000001a:port0 [style=bold]
> > > > > n00000001:port7 -> n00000025:port0 [style=bold]
> > > > > n00000001:port8 -> n00000030:port0 [style=bold]
> > > > > n00000001:port9 -> n0000003b:port0 [style=bold]
> > > > > n00000001:port10 -> n00000046:port0 [style=bold]
> > > > > n00000001:port11 -> n00000051:port0 [style=bold]
> > > > > n00000001:port12 -> n0000005c:port0 [style=bold]
> > > > > n0000000f [label="{{<port0> 0} | mxc_isi.0\n/dev/v4l-subdev9 |
> > > > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n0000000f:port1 -> n00000012 [style=bold]
> > > > > n00000012 [label="mxc_isi.0.capture\n/dev/video8", shape=box,
> > > > > style=filled, fillcolor=yellow]
> > > > > n0000001a [label="{{<port0> 0} | mxc_isi.1\n/dev/v4l-subdev10 |
> > > > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n0000001a:port1 -> n0000001d [style=bold]
> > > > > n0000001d [label="mxc_isi.1.capture\n/dev/video9", shape=box,
> > > > > style=filled, fillcolor=yellow]
> > > > > n00000025 [label="{{<port0> 0} | mxc_isi.2\n/dev/v4l-subdev11 |
> > > > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n00000025:port1 -> n00000028 [style=bold]
> > > > > n00000028 [label="mxc_isi.2.capture\n/dev/video10", shape=box,
> > > > > style=filled, fillcolor=yellow]
> > > > > n00000030 [label="{{<port0> 0} | mxc_isi.3\n/dev/v4l-subdev12 |
> > > > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n00000030:port1 -> n00000033 [style=bold]
> > > > > n00000033 [label="mxc_isi.3.capture\n/dev/video13", shape=box,
> > > > > style=filled, fillcolor=yellow]
> > > > > n0000003b [label="{{<port0> 0} | mxc_isi.4\n/dev/v4l-subdev13 |
> > > > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n0000003b:port1 -> n0000003e [style=bold]
> > > > > n0000003e [label="mxc_isi.4.capture\n/dev/video14", shape=box,
> > > > > style=filled, fillcolor=yellow]
> > > > > n00000046 [label="{{<port0> 0} | mxc_isi.5\n/dev/v4l-subdev14 |
> > > > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n00000046:port1 -> n00000049 [style=bold]
> > > > > n00000049 [label="mxc_isi.5.capture\n/dev/video21", shape=box,
> > > > > style=filled, fillcolor=yellow]
> > > > > n00000051 [label="{{<port0> 0} | mxc_isi.6\n/dev/v4l-subdev15 |
> > > > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n00000051:port1 -> n00000054 [style=bold]
> > > > > n00000054 [label="mxc_isi.6.capture\n/dev/video22", shape=box,
> > > > > style=filled, fillcolor=yellow]
> > > > > n0000005c [label="{{<port0> 0} | mxc_isi.7\n/dev/v4l-subdev16 |
> > > > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n0000005c:port1 -> n0000005f [style=bold]
> > > > > n0000005f [label="mxc_isi.7.capture\n/dev/video23", shape=box,
> > > > > style=filled, fillcolor=yellow]
> > > > > n00000067 [label="mxc_isi.output\n", shape=box, style=filled,
> > > > > fillcolor=yellow]
> > > > > n00000067 -> n00000001:port4 [style=bold]
> > > > > n0000006e [label="{{<port0> 0} |
> > > > > 4ac10000.syscon:formatter@20\n/dev/v4l-subdev17 | {<port1> 1}}",
> > > > > shape=Mrecord, style=filled, fillcolor=green]
> > > > > n0000006e:port1 -> n00000001:port2 [style=bold]
> > > > > n00000073 [label="{{<port0> 0} |
> > > > > csidev-4ad30000.csi\n/dev/v4l-subdev18 | {<port1> 1}}", shape=Mrecord,
> > > > > style=filled, fillcolor=green]
> > > > > n00000073:port1 -> n0000006e:port0 [style=bold]
> > > > > n00000078 [label="{{<port0> 0 | <port1> 1 | <port2> 2 | <port3> 3} |
> > > > > max96724 2-0027\n/dev/v4l-subdev19 | {<port4> 4 | <port5> 5}}",
> > > > > shape=Mrecord, style=filled, fillcolor=green]
> > > > > n00000078:port4 -> n00000073:port0 [style=dashed]
> > > > > n00000081 [label="{{} | mx95mbcam 8-0040\n/dev/v4l-subdev20 |
> > > > > {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n00000081:port0 -> n00000078:port0 [style=bold]
> > > > > n00000085 [label="{{} | mx95mbcam 9-0040\n/dev/v4l-subdev21 |
> > > > > {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n00000085:port0 -> n00000078:port1 [style=bold]
> > > > > n00000089 [label="{{} | mx95mbcam 10-0040\n/dev/v4l-subdev22 |
> > > > > {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n00000089:port0 -> n00000078:port2 [style=bold]
> > > > > n0000008d [label="{{} | mx95mbcam 11-0040\n/dev/v4l-subdev23 |
> > > > > {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n0000008d:port0 -> n00000078:port3 [style=bold]
> > > > > }
> > > > >
> > > > >
> > > > > > >
> > > > > > > If I'm not mistaken you'll have 8 copies of the ISP media graphs, and
> > > > > > > that's exactly what we're working on with the context framework :)
> > > > > > >
> > > > >
> > > > > Ok. Then I should have a look to context framework too ...
> > > > >
> > > >
> > > > Please, I hope to be able to resume working on it sooner or later
> > > > given the right use case.
> > > >
> > > > > > >
> > > > > > > >
> > > > > > > > ... since it is not, your assumption seems very reasonable.
> > > > > > > >
> > > > > > > > >
> > > > > > > > > > - How can the user decide whether direct (csi2isp) or indirect
> > > > > > > > > > (mem2mem) streaming shall be used?
> > > > > > > > >
> > > > > > > > > That will also be part of the evaluation. From dts would be my first
> > > > > > > > > option, but may prevent using both modes on same platform then.
> > > > > > > >
> > > > > > > > Of course this depends what the hardware is able to do, but in case the
> > > > > > > > HW is reconfigurable easily, I doubt that device tree is a good choice
> > > > > > > > to solve that.
> > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > While it is certainly OK to introduce this support only at a later
> > > > > > > > > > stage, it makes sense to consider this right from the start to avoid
> > > > > > > > > > some nasty changes e.g. in how this hardware is exposed to user space.
> > > > > > > > > >
> > > > > > > > > > Also, we are facing a similiar challenge with recent Rockchip ISP
> > > > > > > > > > hardware (RK3588, RK3576, ...) and it would be great to hear your
> > > > > > > > > > thoughts about that.
> > > > > > > > >
> > > > > > > > > Is there an existing discussion thread available on this topic? I would
> > > > > > > > > be very interested in following it.
> > > > > > > >
> > > > > > > > Not yet, I am afraid. But there should be one or two soon (TM) :-)
> > > > > > >
> > > > > > > It's probably time to have one :)
> > > > >
> > > > > Good. Please loop me in ;)
> > > >
> > > > You are in, this is the conversation ;)
> > > >
> > > > It might be a good discussion point for the media summit in Nice
> > > > co-located with Embedded Recipes if people with interest in the topic
> > > > will going the be there.
> > > >
> > > > I'm also adding Anthony from ARM as I know he's going through the same
> > > > inline/m2m duality you're now facing.
> > > >
> > > > Thanks
> > > > j
> > > >
> > > > >
> > > > > BR
> > > > > Antoine
> > > > >
> > > > > > >
> > > > > > > >
> > > > > > > > Thanks and regards,
> > > > > > > > Michael
> > > > > > > >
> > > > > > > > >
> > > > > > > > > Thanks
> > > > > > > > > Antoine
> > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > Thanks in advance and best regards,
> > > > > > > > > > Michael
> > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > This series is posted as RFC because extending the v4l2-isp interface
> > > > > > > > > > > may
> > > > > > > > > > > overlap with ongoing work. If similar development already exists, I am
> > > > > > > > > > > happy to rebase or adapt the series accordingly. If preferred, the
> > > > > > > > > > > series
> > > > > > > > > > > can also be split into two parts: the v4l2-isp rework and the Neo ISP
> > > > > > > > > > > driver introduction.
> > > > > > > > > > >
> > > > > > > > > > > A few checkpatch warnings in v4l2-ioctl.c remain intentionally to stay
> > > > > > > > > > > consistent with the existing style in that file.
> > > > > > > > > > >
> > > > > > > > > > > Testing was performed on the i.MX95 EVK using the media/next kernel in
> > > > > > > > > > > standalone M2M mode. End-to-end camera-to-ISP capture has been validated
> > > > > > > > > > > using the downstream NXP kernel, as some hardware dependencies are not
> > > > > > > > > > > yet upstreamed.
> > > > > > > > > > >
> > > > > > > > > > > Thanks,
> > > > > > > > > > > Antoine
> > > > > > > > > > >
> > > > > > > > > > > ---
> > > > > > > > > > > Here are v4l2-compliance test results:
> > > > > > > > > > >
> > > > > > > > > > > v4l2-compliance 1.28.1-5233, 64 bits, 64-bit time_t
> > > > > > > > > > > v4l2-compliance SHA: fc15e229d9d3 2024-07-23 19:22:15
> > > > > > > > > > >
> > > > > > > > > > > Compliance test for neoisp device /dev/media0:
> > > > > > > > > > >
> > > > > > > > > > > Media Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Model : neoisp
> > > > > > > > > > > Serial :
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Media version : 6.19.0
> > > > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > > > Driver version : 6.19.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:
> > > > > > > > > > > test MEDIA_IOC_G_TOPOLOGY: OK
> > > > > > > > > > > Entities: 7 Interfaces: 7 Pads: 12 Links: 13
> > > > > > > > > > > test MEDIA_IOC_ENUM_ENTITIES/LINKS: OK
> > > > > > > > > > > test MEDIA_IOC_SETUP_LINK: OK
> > > > > > > > > > >
> > > > > > > > > > > Total for neoisp device /dev/media0: 8, Succeeded: 8, Failed: 0,
> > > > > > > > > > > Warnings: 0
> > > > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > > > Compliance test for neoisp device /dev/video0:
> > > > > > > > > > >
> > > > > > > > > > > Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Card type : neoisp
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > > > Video Capture Multiplanar
> > > > > > > > > > > Video Output Multiplanar
> > > > > > > > > > > Metadata Capture
> > > > > > > > > > > Metadata Output
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Device Capabilities
> > > > > > > > > > > Device Caps : 0x04202000
> > > > > > > > > > > Video Output Multiplanar
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Media Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Model : neoisp
> > > > > > > > > > > Serial :
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Media version : 6.19.0
> > > > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Interface Info:
> > > > > > > > > > > ID : 0x0300000a
> > > > > > > > > > > Type : V4L Video
> > > > > > > > > > > Entity Info:
> > > > > > > > > > > ID : 0x00000008 (8)
> > > > > > > > > > > Name : neoisp-input0
> > > > > > > > > > > Function : V4L2 I/O
> > > > > > > > > > > Pad 0x01000009 : 0: Source
> > > > > > > > > > > Link 0x0200000c: to remote pad 0x1000002 of entity
> > > > > > > > > > > 'neoisp' (Image Signal Processor): Data, Enabled, Immutable
> > > > > > > > > > >
> > > > > > > > > > > Required ioctls:
> > > > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test invalid ioctls: OK
> > > > > > > > > > >
> > > > > > > > > > > Allow for multiple opens:
> > > > > > > > > > > test second /dev/video0 open: OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > > > test for unlimited opens: OK
> > > > > > > > > > >
> > > > > > > > > > > Debug ioctls:
> > > > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Input ioctls:
> > > > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > > > >
> > > > > > > > > > > Output ioctls:
> > > > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > > > >
> > > > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Control ioctls:
> > > > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > > > >
> > > > > > > > > > > Format ioctls:
> > > > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > > > test Cropping: OK
> > > > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > > > test Scaling: OK
> > > > > > > > > > >
> > > > > > > > > > > Codec ioctls:
> > > > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Buffer ioctls:
> > > > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Total for neoisp device /dev/video0: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > > > Warnings: 0
> > > > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > > > Compliance test for neoisp device /dev/video1:
> > > > > > > > > > >
> > > > > > > > > > > Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Card type : neoisp
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > > > Video Capture Multiplanar
> > > > > > > > > > > Video Output Multiplanar
> > > > > > > > > > > Metadata Capture
> > > > > > > > > > > Metadata Output
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Device Capabilities
> > > > > > > > > > > Device Caps : 0x04202000
> > > > > > > > > > > Video Output Multiplanar
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Media Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Model : neoisp
> > > > > > > > > > > Serial :
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Media version : 6.19.0
> > > > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Interface Info:
> > > > > > > > > > > ID : 0x03000010
> > > > > > > > > > > Type : V4L Video
> > > > > > > > > > > Entity Info:
> > > > > > > > > > > ID : 0x0000000e (14)
> > > > > > > > > > > Name : neoisp-input1
> > > > > > > > > > > Function : V4L2 I/O
> > > > > > > > > > > Pad 0x0100000f : 0: Source
> > > > > > > > > > > Link 0x02000012: to remote pad 0x1000003 of entity
> > > > > > > > > > > 'neoisp' (Image Signal Processor): Data
> > > > > > > > > > >
> > > > > > > > > > > Required ioctls:
> > > > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test invalid ioctls: OK
> > > > > > > > > > >
> > > > > > > > > > > Allow for multiple opens:
> > > > > > > > > > > test second /dev/video1 open: OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > > > test for unlimited opens: OK
> > > > > > > > > > >
> > > > > > > > > > > Debug ioctls:
> > > > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Input ioctls:
> > > > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > > > >
> > > > > > > > > > > Output ioctls:
> > > > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > > > >
> > > > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Control ioctls:
> > > > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > > > >
> > > > > > > > > > > Format ioctls:
> > > > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > > > test Cropping: OK
> > > > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > > > test Scaling: OK
> > > > > > > > > > >
> > > > > > > > > > > Codec ioctls:
> > > > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Buffer ioctls:
> > > > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Total for neoisp device /dev/video1: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > > > Warnings: 0
> > > > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > > > Compliance test for neoisp device /dev/video2:
> > > > > > > > > > >
> > > > > > > > > > > Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Card type : neoisp
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > > > Video Capture Multiplanar
> > > > > > > > > > > Video Output Multiplanar
> > > > > > > > > > > Metadata Capture
> > > > > > > > > > > Metadata Output
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Device Capabilities
> > > > > > > > > > > Device Caps : 0x0c200000
> > > > > > > > > > > Metadata Output
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Media Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Model : neoisp
> > > > > > > > > > > Serial :
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Media version : 6.19.0
> > > > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Interface Info:
> > > > > > > > > > > ID : 0x03000016
> > > > > > > > > > > Type : V4L Video
> > > > > > > > > > > Entity Info:
> > > > > > > > > > > ID : 0x00000014 (20)
> > > > > > > > > > > Name : neoisp-params
> > > > > > > > > > > Function : V4L2 I/O
> > > > > > > > > > > Pad 0x01000015 : 0: Source
> > > > > > > > > > > Link 0x02000018: to remote pad 0x1000004 of entity
> > > > > > > > > > > 'neoisp' (Image Signal Processor): Data, Enabled
> > > > > > > > > > >
> > > > > > > > > > > Required ioctls:
> > > > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test invalid ioctls: OK
> > > > > > > > > > >
> > > > > > > > > > > Allow for multiple opens:
> > > > > > > > > > > test second /dev/video2 open: OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > > > test for unlimited opens: OK
> > > > > > > > > > >
> > > > > > > > > > > Debug ioctls:
> > > > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Input ioctls:
> > > > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > > > >
> > > > > > > > > > > Output ioctls:
> > > > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > > > >
> > > > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Control ioctls:
> > > > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > > > >
> > > > > > > > > > > Format ioctls:
> > > > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > > > test Cropping: OK (Not Supported)
> > > > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > > > test Scaling: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Codec ioctls:
> > > > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Buffer ioctls:
> > > > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Total for neoisp device /dev/video2: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > > > Warnings: 0
> > > > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > > > Compliance test for neoisp device /dev/video3:
> > > > > > > > > > >
> > > > > > > > > > > Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Card type : neoisp
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > > > Video Capture Multiplanar
> > > > > > > > > > > Video Output Multiplanar
> > > > > > > > > > > Metadata Capture
> > > > > > > > > > > Metadata Output
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Device Capabilities
> > > > > > > > > > > Device Caps : 0x04201000
> > > > > > > > > > > Video Capture Multiplanar
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Media Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Model : neoisp
> > > > > > > > > > > Serial :
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Media version : 6.19.0
> > > > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Interface Info:
> > > > > > > > > > > ID : 0x0300001c
> > > > > > > > > > > Type : V4L Video
> > > > > > > > > > > Entity Info:
> > > > > > > > > > > ID : 0x0000001a (26)
> > > > > > > > > > > Name : neoisp-frame
> > > > > > > > > > > Function : V4L2 I/O
> > > > > > > > > > > Pad 0x0100001b : 0: Sink
> > > > > > > > > > > Link 0x0200001e: from remote pad 0x1000005 of entity
> > > > > > > > > > > 'neoisp' (Image Signal Processor): Data, Enabled
> > > > > > > > > > >
> > > > > > > > > > > Required ioctls:
> > > > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test invalid ioctls: OK
> > > > > > > > > > >
> > > > > > > > > > > Allow for multiple opens:
> > > > > > > > > > > test second /dev/video3 open: OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > > > test for unlimited opens: OK
> > > > > > > > > > >
> > > > > > > > > > > Debug ioctls:
> > > > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Input ioctls:
> > > > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > > > >
> > > > > > > > > > > Output ioctls:
> > > > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > > > >
> > > > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Control ioctls:
> > > > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > > > >
> > > > > > > > > > > Format ioctls:
> > > > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > > > test Cropping: OK (Not Supported)
> > > > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > > > test Scaling: OK
> > > > > > > > > > >
> > > > > > > > > > > Codec ioctls:
> > > > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Buffer ioctls:
> > > > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Total for neoisp device /dev/video3: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > > > Warnings: 0
> > > > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > > > Compliance test for neoisp device /dev/video4:
> > > > > > > > > > >
> > > > > > > > > > > Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Card type : neoisp
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > > > Video Capture Multiplanar
> > > > > > > > > > > Video Output Multiplanar
> > > > > > > > > > > Metadata Capture
> > > > > > > > > > > Metadata Output
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Device Capabilities
> > > > > > > > > > > Device Caps : 0x04201000
> > > > > > > > > > > Video Capture Multiplanar
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Media Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Model : neoisp
> > > > > > > > > > > Serial :
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Media version : 6.19.0
> > > > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Interface Info:
> > > > > > > > > > > ID : 0x03000022
> > > > > > > > > > > Type : V4L Video
> > > > > > > > > > > Entity Info:
> > > > > > > > > > > ID : 0x00000020 (32)
> > > > > > > > > > > Name : neoisp-ir
> > > > > > > > > > > Function : V4L2 I/O
> > > > > > > > > > > Pad 0x01000021 : 0: Sink
> > > > > > > > > > > Link 0x02000024: from remote pad 0x1000006 of entity
> > > > > > > > > > > 'neoisp' (Image Signal Processor): Data
> > > > > > > > > > >
> > > > > > > > > > > Required ioctls:
> > > > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test invalid ioctls: OK
> > > > > > > > > > >
> > > > > > > > > > > Allow for multiple opens:
> > > > > > > > > > > test second /dev/video4 open: OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > > > test for unlimited opens: OK
> > > > > > > > > > >
> > > > > > > > > > > Debug ioctls:
> > > > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Input ioctls:
> > > > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > > > >
> > > > > > > > > > > Output ioctls:
> > > > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > > > >
> > > > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Control ioctls:
> > > > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > > > >
> > > > > > > > > > > Format ioctls:
> > > > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > > > test Cropping: OK (Not Supported)
> > > > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > > > test Scaling: OK
> > > > > > > > > > >
> > > > > > > > > > > Codec ioctls:
> > > > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Buffer ioctls:
> > > > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Total for neoisp device /dev/video4: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > > > Warnings: 0
> > > > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > > > Compliance test for neoisp device /dev/video5:
> > > > > > > > > > >
> > > > > > > > > > > Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Card type : neoisp
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > > > Video Capture Multiplanar
> > > > > > > > > > > Video Output Multiplanar
> > > > > > > > > > > Metadata Capture
> > > > > > > > > > > Metadata Output
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Device Capabilities
> > > > > > > > > > > Device Caps : 0x04a00000
> > > > > > > > > > > Metadata Capture
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Media Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Model : neoisp
> > > > > > > > > > > Serial :
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Media version : 6.19.0
> > > > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Interface Info:
> > > > > > > > > > > ID : 0x03000028
> > > > > > > > > > > Type : V4L Video
> > > > > > > > > > > Entity Info:
> > > > > > > > > > > ID : 0x00000026 (38)
> > > > > > > > > > > Name : neoisp-stats
> > > > > > > > > > > Function : V4L2 I/O
> > > > > > > > > > > Pad 0x01000027 : 0: Sink
> > > > > > > > > > > Link 0x0200002a: from remote pad 0x1000007 of entity
> > > > > > > > > > > 'neoisp' (Image Signal Processor): Data, Enabled
> > > > > > > > > > >
> > > > > > > > > > > Required ioctls:
> > > > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test invalid ioctls: OK
> > > > > > > > > > >
> > > > > > > > > > > Allow for multiple opens:
> > > > > > > > > > > test second /dev/video5 open: OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > > > test for unlimited opens: OK
> > > > > > > > > > >
> > > > > > > > > > > Debug ioctls:
> > > > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Input ioctls:
> > > > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > > > >
> > > > > > > > > > > Output ioctls:
> > > > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > > > >
> > > > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Control ioctls:
> > > > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > > > >
> > > > > > > > > > > Format ioctls:
> > > > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > > > test Cropping: OK (Not Supported)
> > > > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > > > test Scaling: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Codec ioctls:
> > > > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Buffer ioctls:
> > > > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Total for neoisp device /dev/video5: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > > > Warnings: 0
> > > > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > > > Compliance test for neoisp device /dev/v4l-subdev0:
> > > > > > > > > > >
> > > > > > > > > > > Driver Info:
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Capabilities : 0x00000000
> > > > > > > > > > > Client Capabilities: 0x0000000000000002
> > > > > > > > > > > interval-uses-which Media Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Model : neoisp
> > > > > > > > > > > Serial :
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Media version : 6.19.0
> > > > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Interface Info:
> > > > > > > > > > > ID : 0x0300002c
> > > > > > > > > > > Type : V4L Sub-Device
> > > > > > > > > > > Entity Info:
> > > > > > > > > > > ID : 0x00000001 (1)
> > > > > > > > > > > Name : neoisp
> > > > > > > > > > > Function : Image Signal Processor
> > > > > > > > > > > Pad 0x01000002 : 0: Sink
> > > > > > > > > > > Link 0x0200000c: from remote pad 0x1000009 of entity
> > > > > > > > > > > 'neoisp-input0' (V4L2 I/O): Data, Enabled, Immutable
> > > > > > > > > > > Pad 0x01000003 : 1: Sink
> > > > > > > > > > > Link 0x02000012: from remote pad 0x100000f of entity
> > > > > > > > > > > 'neoisp-input1' (V4L2 I/O): Data
> > > > > > > > > > > Pad 0x01000004 : 2: Sink
> > > > > > > > > > > Link 0x02000018: from remote pad 0x1000015 of entity
> > > > > > > > > > > 'neoisp-params' (V4L2 I/O): Data, Enabled
> > > > > > > > > > > Pad 0x01000005 : 3: Source
> > > > > > > > > > > Link 0x0200001e: to remote pad 0x100001b of entity 'neoisp-
> > > > > > > > > > > frame' (V4L2 I/O): Data, Enabled
> > > > > > > > > > > Pad 0x01000006 : 4: Source
> > > > > > > > > > > Link 0x02000024: to remote pad 0x1000021 of entity 'neoisp-
> > > > > > > > > > > ir' (V4L2 I/O): Data
> > > > > > > > > > > Pad 0x01000007 : 5: Source
> > > > > > > > > > > Link 0x0200002a: to remote pad 0x1000027 of entity 'neoisp-
> > > > > > > > > > > stats' (V4L2 I/O): Data, Enabled
> > > > > > > > > > >
> > > > > > > > > > > Required ioctls:
> > > > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > > > test VIDIOC_SUDBEV_QUERYCAP: OK
> > > > > > > > > > > test invalid ioctls: OK
> > > > > > > > > > >
> > > > > > > > > > > Allow for multiple opens:
> > > > > > > > > > > test second /dev/v4l-subdev0 open: OK
> > > > > > > > > > > test VIDIOC_SUBDEV_QUERYCAP: OK
> > > > > > > > > > > test for unlimited opens: OK
> > > > > > > > > > >
> > > > > > > > > > > Debug ioctls:
> > > > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Input ioctls:
> > > > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > > > >
> > > > > > > > > > > Output ioctls:
> > > > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > > > >
> > > > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Sub-Device ioctls (Sink Pad 0):
> > > > > > > > > > > Try Stream 0
> > > > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > Active Stream 0
> > > > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Sub-Device ioctls (Sink Pad 1):
> > > > > > > > > > > Try Stream 0
> > > > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > Active Stream 0
> > > > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Sub-Device ioctls (Sink Pad 2):
> > > > > > > > > > > Try Stream 0
> > > > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > Active Stream 0
> > > > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Sub-Device ioctls (Source Pad 3):
> > > > > > > > > > > Try Stream 0
> > > > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > Active Stream 0
> > > > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Sub-Device ioctls (Source Pad 4):
> > > > > > > > > > > Try Stream 0
> > > > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > Active Stream 0
> > > > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Sub-Device ioctls (Source Pad 5):
> > > > > > > > > > > Try Stream 0
> > > > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > Active Stream 0
> > > > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Control ioctls:
> > > > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
> > > > > > > > > > > test VIDIOC_QUERYCTRL: OK
> > > > > > > > > > > test VIDIOC_G/S_CTRL: OK
> > > > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK
> > > > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
> > > > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > > > Standard Controls: 1 Private Controls: 1
> > > > > > > > > > >
> > > > > > > > > > > Format ioctls:
> > > > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not
> > > > > > > > > > > Supported)
> > > > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FMT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_TRY_FMT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_S_FMT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > > > test Cropping: OK (Not Supported)
> > > > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > > > test Scaling: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Codec ioctls:
> > > > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Buffer ioctls:
> > > > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK (Not Supported)
> > > > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > > > test VIDIOC_EXPBUF: OK (Not Supported)
> > > > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Total for neoisp device /dev/v4l-subdev0: 88, Succeeded: 88, Failed:
> > > > > > > > > > > 0, Warnings: 0
> > > > > > > > > > >
> > > > > > > > > > > Grand Total for neoisp device /dev/media0: 384, Succeeded: 384,
> > > > > > > > > > > Failed: 0, Warnings: 0
> > > > > > > > > > >
> > > > > > > > > > > ---
> > > > > > > > > > > Antoine Bouyer (11):
> > > > > > > > > > > media: uapi: v4l2-isp: Add v4l2 ISP extensible statistics definitions
> > > > > > > > > > > media: v4l2-isp: Add helper function to compute extended stats size
> > > > > > > > > > > media: Documentation: uapi: Update V4L2 ISP for extensible stats
> > > > > > > > > > > media: Documentation: Add NXP neoisp driver documentation
> > > > > > > > > > > dt-bindings: media: Add nxp neoisp support
> > > > > > > > > > > media: v4l2-ctrls: Add user control base for NXP neoisp controls
> > > > > > > > > > > media: Add meta formats supported by NXP neoisp driver
> > > > > > > > > > > media: uapi: Add NXP NEOISP user interface header file
> > > > > > > > > > > media: platform: Add NXP Neoisp Image Signal Processor
> > > > > > > > > > > media: platform: neoisp: Add debugfs support
> > > > > > > > > > > arm64: dts: freescale: imx95: Add NXP neoisp device tree node
> > > > > > > > > > >
> > > > > > > > > > > .../admin-guide/media/nxp-neoisp-diagram.dot | 22 +
> > > > > > > > > > > .../admin-guide/media/nxp-neoisp.dot | 16 +
> > > > > > > > > > > .../admin-guide/media/nxp-neoisp.rst | 189 ++
> > > > > > > > > > > .../admin-guide/media/v4l-drivers.rst | 1 +
> > > > > > > > > > > .../devicetree/bindings/media/nxp,neoisp.yaml | 65 +
> > > > > > > > > > > .../userspace-api/media/v4l/meta-formats.rst | 1 +
> > > > > > > > > > > .../media/v4l/metafmt-nxp-neoisp.rst | 114 +
> > > > > > > > > > > .../userspace-api/media/v4l/v4l2-isp.rst | 42 +-
> > > > > > > > > > > MAINTAINERS | 9 +
> > > > > > > > > > > .../boot/dts/freescale/imx95-19x19-evk.dts | 4 +
> > > > > > > > > > > arch/arm64/boot/dts/freescale/imx95.dtsi | 11 +
> > > > > > > > > > > drivers/media/platform/nxp/Kconfig | 1 +
> > > > > > > > > > > drivers/media/platform/nxp/Makefile | 1 +
> > > > > > > > > > > drivers/media/platform/nxp/neoisp/Kconfig | 15 +
> > > > > > > > > > > drivers/media/platform/nxp/neoisp/Makefile | 8 +
> > > > > > > > > > > drivers/media/platform/nxp/neoisp/neoisp.h | 270 ++
> > > > > > > > > > > .../media/platform/nxp/neoisp/neoisp_ctx.c | 2798 +++++++++++++++++
> > > > > > > > > > > .../media/platform/nxp/neoisp/neoisp_ctx.h | 85 +
> > > > > > > > > > > .../platform/nxp/neoisp/neoisp_debugfs.c | 503 +++
> > > > > > > > > > > .../media/platform/nxp/neoisp/neoisp_fmt.h | 509 +++
> > > > > > > > > > > drivers/media/platform/nxp/neoisp/neoisp_hw.h | 577 ++++
> > > > > > > > > > > .../media/platform/nxp/neoisp/neoisp_main.c | 1999 ++++++++++++
> > > > > > > > > > > .../media/platform/nxp/neoisp/neoisp_nodes.h | 60 +
> > > > > > > > > > > .../media/platform/nxp/neoisp/neoisp_regs.h | 2501 +++++++++++++++
> > > > > > > > > > > drivers/media/v4l2-core/v4l2-ioctl.c | 4 +
> > > > > > > > > > > include/media/v4l2-isp.h | 13 +
> > > > > > > > > > > include/uapi/linux/media/nxp/nxp_neoisp.h | 1968 ++++++++++++
> > > > > > > > > > > include/uapi/linux/media/v4l2-isp.h | 85 +
> > > > > > > > > > > include/uapi/linux/v4l2-controls.h | 6 +
> > > > > > > > > > > include/uapi/linux/videodev2.h | 6 +
> > > > > > > > > > > 30 files changed, 11880 insertions(+), 3 deletions(-)
> > > > > > > > > > > create mode 100644 Documentation/admin-guide/media/nxp-neoisp-
> > > > > > > > > > > diagram.dot
> > > > > > > > > > > create mode 100644 Documentation/admin-guide/media/nxp-neoisp.dot
> > > > > > > > > > > create mode 100644 Documentation/admin-guide/media/nxp-neoisp.rst
> > > > > > > > > > > create mode 100644 Documentation/devicetree/bindings/media/
> > > > > > > > > > > nxp,neoisp.yaml
> > > > > > > > > > > create mode 100644 Documentation/userspace-api/media/v4l/metafmt-
> > > > > > > > > > > nxp-neoisp.rst
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/Kconfig
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/Makefile
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp.h
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_ctx.c
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_ctx.h
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_debugfs.c
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_fmt.h
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_hw.h
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_main.c
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_nodes.h
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_regs.h
> > > > > > > > > > > create mode 100644 include/uapi/linux/media/nxp/nxp_neoisp.h
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > >
> > >
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Re: [RFC v1 01/11] media: uapi: v4l2-isp: Add v4l2 ISP extensible statistics definitions
[not found] ` <20260209230036.GF2405149@killaraus.ideasonboard.com>
@ 2026-03-02 9:41 ` Antoine Bouyer
2026-03-03 8:48 ` Jacopo Mondi
0 siblings, 1 reply; 14+ messages in thread
From: Antoine Bouyer @ 2026-03-02 9:41 UTC (permalink / raw)
To: Laurent Pinchart, Jacopo Mondi
Cc: julien.vuillaumier, alexi.birlinger, daniel.baluta, peng.fan,
frank.li, mchehab, robh, krzk+dt, conor+dt, shawnguo, s.hauer,
kernel, festevam, linux-kernel, linux-media, devicetree,
linux-arm-kernel
Hi Laurent, Jacopo
On 2/10/26 12:00 AM, Laurent Pinchart wrote:
>
>
> On Wed, Feb 04, 2026 at 02:14:50PM +0100, Jacopo Mondi wrote:
>> On Wed, Feb 04, 2026 at 12:07:41PM +0100, Antoine Bouyer wrote:
>>> On 2/3/26 5:15 PM, Jacopo Mondi wrote:
>>>> On Fri, Jan 23, 2026 at 09:09:28AM +0100, Antoine Bouyer wrote:
>>>>> Extend the v4l2-isp extensible format introduced for isp parameters buffer
>>>>> to the statistics buffer as well.
>>>>>
>>>>> Like for ISP configuration purpose, that will help supporting various ISP
>>>>> hardware versions reporting different statistics data with less impact on
>>>>> userspace.
>>>>>
>>>>> The `v4l2_isp_stats_buffer` reuses the `v4l2_isp_params_buffer` container
>>>>> definitions, with similar header, versions and flags. V0 and V1 versions
>>>>
>>>> Why do you need two flags ?
>>>>
>>>> Params had to introduce two because we had two drivers already
>>>> mainlined using the pre-v4l2-isp version of extensible params which
>>>> had defined their version identifier as 1 and 0 and we didn't want to
>>>> break existing userspace using those identifiers. So we had to accept
>>>> both V0 and V1 as "first version of the v4l2-isp extensible parameters
>>>> format".
>>>>
>>>> For stats we don't have users, so I guess we can start with V1 == 0 ?
>>>
>>> I wanted to keep it aligned with params, so that any driver/userspace can
>>> use the same API version value for both params and stats buffers, and limit
>>> headache.
Seems this topic is not yet clarified. Should I use same version values
for both params and stats as in current patch ? Or use different values
V1 == 0 as suggested ?
From userspace perspective, I feel it would be easier to align params
and stats versions, so we don't need to maintain different versions for
same purpose; and if a new version V2 comes and is applied to both
params and stats buffers, then we can use same value too. What do you
think ?
>>>
>>>>> are provided to match with params versions. On the other side, ENABLE and
>>>>> DISABLE flags are not really meaningfull for statistics purpose. So VALID
>>>>> and INVALID flags are introduced. Purpose is to force ISP driver to
>>>>> validate a statistics buffer, before it is consumed by userspace.
>>>>
>>>> Interesting. What do you mean with "validate a statistics buffer" ?
>>>> And if a driver has to do validation, why would it send upstream a
>>>> non-validated buffer ?
>>>
>>> Like for version, I wanted to keep same header structure, including flags.
>>> Since ENABLE/DISABLE is not relevant for statistics, I thought about using a
>>> "validation" flag, to force driver confirming statistics blocks are valid or
>>> not.
>>
>> See the question on the documentation patches.
>>
>>> If you feel it is useless, I'm fine with removing it. Should I keep a flag
>>> field anyway to stay aligned with params then ?
>>
>> RkISP1 has support for both "legacy" and "extensible" formats because
>> it has been mainline for a long time with the legacy format only. We
>> couldn't simply replace the existing format with the new one because
>> we would break existing users.
>>
>> All the other drivers that have been upstreamed with extensible only
>> (Amlogic C3 and Mali C55) do not expose a legacy format as there was
>> not prior version in mainline on which userspace might depend on.
>>
>> Unless you have very convincing reason, I would certainly drop the
>> legacy format and only use extensible.
>
> I agree with that, for upstream we shouldn't carry legacy formats in new
> drivers. I've read elsewhere in this thread that it won't cause issues,
> otherwise I would have recommended carrying an extra patch in the BSP
> kernel to implement legacy formats, and only use extensible formats
> upstream.
ok. I'm fine with removing legacy format from neo driver, and keep it
only in downstream for some time.
>
>>>>> Signed-off-by: Antoine Bouyer <antoine.bouyer@nxp.com>
>>>>> ---
>>>>> include/uapi/linux/media/v4l2-isp.h | 85 +++++++++++++++++++++++++++++
>>>>> 1 file changed, 85 insertions(+)
>>>>>
>>>>> diff --git a/include/uapi/linux/media/v4l2-isp.h b/include/uapi/linux/media/v4l2-isp.h
>>>>> index 779168f9058e..ed1279b86694 100644
>>>>> --- a/include/uapi/linux/media/v4l2-isp.h
>>>>> +++ b/include/uapi/linux/media/v4l2-isp.h
>>>>> @@ -99,4 +99,89 @@ struct v4l2_isp_params_buffer {
>>>>> __u8 data[] __counted_by(data_size);
>>>>> };
>>>>>
>>>>> +/**
>>>>> + * enum v4l2_isp_stats_version - V4L2 ISP statistics versioning
>>>>> + *
>>>>> + * @V4L2_ISP_STATS_VERSION_V0: First version of the V4L2 ISP statistics format
>>>>> + * (for compatibility)
>>>>> + * @V4L2_ISP_STATS_VERSION_V1: First version of the V4L2 ISP statistics format
>>>>> + *
>>>>> + * V0 and V1 are identical, and comply with V4l2 ISP parameters versions. So
>>>>> + * both V0 and V1 refers to the first version of the V4L2 ISP statistics
>>>>> + * format.
>>>>> + *
>>>>> + * Future revisions of the V4L2 ISP statistics format should start from the
>>>>> + * value of 2.
>>>>> + */
>>>>> +enum v4l2_isp_stats_version {
>>>>> + V4L2_ISP_STATS_VERSION_V0 = 0,
>>>>> + V4L2_ISP_STATS_VERSION_V1,
>>>>
>>>> As suggested I would make V1 == 0
>>>>
>>>>> +};
>>>>> +
>>>>> +#define V4L2_ISP_PARAMS_FL_BLOCK_VALID (1U << 0)
>>>>> +#define V4L2_ISP_PARAMS_FL_BLOCK_INVALID (1U << 1)
>>>>> +
>>>>> +/*
>>>>> + * Reserve the first 8 bits for V4L2_ISP_STATS_FL_* flag.
>>>>> + *
>>>>> + * Driver-specific flags should be defined as:
>>>>> + * #define DRIVER_SPECIFIC_FLAG0 ((1U << V4L2_ISP_STATS_FL_DRIVER_FLAGS(0))
>>>>> + * #define DRIVER_SPECIFIC_FLAG1 ((1U << V4L2_ISP_STATS_FL_DRIVER_FLAGS(1))
>>>>> + */
>>>>> +#define V4L2_ISP_STATS_FL_DRIVER_FLAGS(n) ((n) + 8)
>>>>
>>>> Currently we have no users of V4L2_ISP_PARAMS_FL_DRIVER_FLAGS so we
>>>> could even consider making it a V4L2_ISP_FL_DRIVER_FLAGS
>>>>
>>>> Or do you think it is worth creating a new symbol ?
>>>
>>> To limit impact on potential on-going development, and future conflict,
>>> creating new symbol may be safer IMO. But I'm fine with using a single
>>> symbol if you prefer. Most probably this flag customization is not used yet
>>> by any driver.
>>>
>>>>> +
>>>>> +/**
>>>>> + * struct v4l2_isp_stats_block_header - V4L2 extensible statistics block header
>>>>> + * @type: The statistics block type (driver-specific)
>>>>> + * @flags: A bitmask of block flags (driver-specific)
>>>>> + * @size: Size (in bytes) of the statistics block, including this header
>>>>> + *
>>>>> + * This structure represents the common part of all the ISP statistics blocks.
>>>>> + * Each statistics block shall embed an instance of this structure type as its
>>>>> + * first member, followed by the block-specific statistics data.
>>>>> + *
>>>>> + * The @type field is an ISP driver-specific value that identifies the block
>>>>> + * type. The @size field specifies the size of the parameters block.
>>>>> + *
>>>>> + * The @flags field is a bitmask of per-block flags V4L2_STATS_ISP_FL_* and
>>>>> + * driver-specific flags specified by the driver header.
>>>>> + */
>>>>> +struct v4l2_isp_stats_block_header {
>>>>> + __u16 type;
>>>>> + __u16 flags;
>>>>> + __u32 size;
>>>>> +} __attribute__((aligned(8)));
>>>>> +
>>>>
>>>> This is currently identical to v4l2_isp_params_block_header.
>>>>
>>>> Can we create a single header for both stats and params and provide a
>>>>
>>>> #define v4l2_isp_params_block_header v4l2_isp_block_header
>>>>
>>>> for maintaining compatibility with existing users ?
>>>>
>>>> Or do you expect stats and params to eventually need different headers ?
>>>
>>> Current approach is to use same structure definitions as for params. So I'm
>>> fine with creating a single header as suggested, and provide symbols to keep
>>> compatibility.
>>>
>>>>> +/**
>>>>> + * struct v4l2_isp_stats_buffer - V4L2 extensible statistics data
>>>>> + * @version: The statistics buffer version (driver-specific)
>>>>> + * @data_size: The statistics data effective size, excluding this header
>>>>> + * @data: The statistics data
>>>>> + *
>>>>> + * This structure contains the statistics information of the ISP hardware,
>>>>> + * serialized for userspace into a data buffer. Each statistics block is
>>>>> + * represented by a block-specific structure which contains a
>>>>> + * :c:type:`v4l2_isp_stats_block_header` entry as first member. Driver
>>>>> + * populates the @data buffer with statistics information of the ISP blocks it
>>>>> + * intends to share to userspace. As a consequence, the data buffer effective
>>>>> + * size changes according to the number of ISP blocks that driver intends to
>>>>> + * provide and is set by the driver in the @data_size field.
>>>>> + *
>>>>> + * The statistics buffer is versioned by the @version field to allow modifying
>>>>> + * and extending its definition. Driver shall populate the @version field to
>>>>> + * inform the userpsace about the version it intends to use. The userspace will
>>>>> + * parse and handle the @data buffer according to the data layout specific to
>>>>> + * the indicated version.
>>>>> + *
>>>>> + * For each ISP block that driver wants to report, a block-specific structure
>>>>> + * is appended to the @data buffer, one after the other without gaps in
>>>>> + * between. Driver shall populate the @data_size field with the effective
>>>>> + * size, in bytes, of the @data buffer.
>>>>> + */
>>>>> +struct v4l2_isp_stats_buffer {
>>>>> + __u32 version;
>>>>> + __u32 data_size;
>>>>> + __u8 data[] __counted_by(data_size);
>>>>> +};
>>>>> +
>>>>
>>>> Same question. Should we introduce a struct v4l2_isp_buffer ?
>>>
>>> Yes, sounds reasonable.
>
> That seems to make sense. Once we'll have a driver using
> v4l2_isp_stats_buffer the structure will become ABI. If it then is an
> exact copy of v4l2_isp_params_buffer, it would make sense to unify them.
> Let's see what will happen after a few review rounds, if we end up
> requiring separate fields in the stats buffer header.
ok to use same struct for both.
>
> It would also be nice to implement support for extensible stats in a
> second driver to test the API.
What is your preferred approach then ?
Should I "split" v4l2_isp rework in different patchset BUT with another
driver using it (with userspace changes I guess). Not something I'm
really comfortable with since I only focused on i.MX95 isp so far. But
if this is the only way, that could be evaluated.
Or should I "keep" v4l2_isp changes together with neoisp introduction ?
Thanks
Best regards
Antoine
>
>>>>> #endif /* _UAPI_V4L2_ISP_H_ */
>
> --
> Regards,
>
> Laurent Pinchart
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [RFC v1 01/11] media: uapi: v4l2-isp: Add v4l2 ISP extensible statistics definitions
2026-03-02 9:41 ` Re: [RFC v1 01/11] media: uapi: v4l2-isp: Add v4l2 ISP extensible statistics definitions Antoine Bouyer
@ 2026-03-03 8:48 ` Jacopo Mondi
0 siblings, 0 replies; 14+ messages in thread
From: Jacopo Mondi @ 2026-03-03 8:48 UTC (permalink / raw)
To: Antoine Bouyer
Cc: Laurent Pinchart, Jacopo Mondi, julien.vuillaumier,
alexi.birlinger, daniel.baluta, peng.fan, frank.li, mchehab, robh,
krzk+dt, conor+dt, shawnguo, s.hauer, kernel, festevam,
linux-kernel, linux-media, devicetree, linux-arm-kernel
Hello Antoine
On Mon, Mar 02, 2026 at 10:41:10AM +0100, Antoine Bouyer wrote:
> Hi Laurent, Jacopo
>
> On 2/10/26 12:00 AM, Laurent Pinchart wrote:
> >
> >
> > On Wed, Feb 04, 2026 at 02:14:50PM +0100, Jacopo Mondi wrote:
> > > On Wed, Feb 04, 2026 at 12:07:41PM +0100, Antoine Bouyer wrote:
> > > > On 2/3/26 5:15 PM, Jacopo Mondi wrote:
> > > > > On Fri, Jan 23, 2026 at 09:09:28AM +0100, Antoine Bouyer wrote:
> > > > > > Extend the v4l2-isp extensible format introduced for isp parameters buffer
> > > > > > to the statistics buffer as well.
> > > > > >
> > > > > > Like for ISP configuration purpose, that will help supporting various ISP
> > > > > > hardware versions reporting different statistics data with less impact on
> > > > > > userspace.
> > > > > >
> > > > > > The `v4l2_isp_stats_buffer` reuses the `v4l2_isp_params_buffer` container
> > > > > > definitions, with similar header, versions and flags. V0 and V1 versions
> > > > >
> > > > > Why do you need two flags ?
> > > > >
> > > > > Params had to introduce two because we had two drivers already
> > > > > mainlined using the pre-v4l2-isp version of extensible params which
> > > > > had defined their version identifier as 1 and 0 and we didn't want to
> > > > > break existing userspace using those identifiers. So we had to accept
> > > > > both V0 and V1 as "first version of the v4l2-isp extensible parameters
> > > > > format".
> > > > >
> > > > > For stats we don't have users, so I guess we can start with V1 == 0 ?
> > > >
> > > > I wanted to keep it aligned with params, so that any driver/userspace can
> > > > use the same API version value for both params and stats buffers, and limit
> > > > headache.
>
> Seems this topic is not yet clarified. Should I use same version values for
> both params and stats as in current patch ? Or use different values V1 == 0
> as suggested ?
>
> From userspace perspective, I feel it would be easier to align params and
> stats versions, so we don't need to maintain different versions for same
> purpose; and if a new version V2 comes and is applied to both params and
> stats buffers, then we can use same value too. What do you think ?
As the versioning is meant to identify the serialization format which
is the same for params and stats, ideally we should have the same
identifier both both.
However we can't simply remove enum v4l2_isp_version, to avoid
breaking userspace. What about
--- a/include/uapi/linux/media/v4l2-isp.h
+++ b/include/uapi/linux/media/v4l2-isp.h
@@ -13,25 +13,33 @@
#include <linux/types.h>
/**
- * enum v4l2_isp_params_version - V4L2 ISP parameters versioning
+ * enum v4l2_isp_version - V4L2 ISP serialization format versioning
*
- * @V4L2_ISP_PARAMS_VERSION_V0: First version of the V4L2 ISP parameters format
- * (for compatibility)
- * @V4L2_ISP_PARAMS_VERSION_V1: First version of the V4L2 ISP parameters format
+ * @V4L2_ISP_VERSION_V0: First version of the V4L2 ISP serialization format
+ * (for compatibility)
+ * @V4L2_ISP_VERSION_V1: First version of the V4L2 ISP serialization format
*
* V0 and V1 are identical in order to support drivers compatible with the V4L2
- * ISP parameters format already upstreamed which use either 0 or 1 as their
- * versioning identifier. Both V0 and V1 refers to the first version of the
- * V4L2 ISP parameters format.
+ * ISP format already upstreamed which use either 0 or 1 as their versioning
+ * identifier. Both V0 and V1 refers to the first version of the V4L2 ISP
+ * serialization format.
*
- * Future revisions of the V4L2 ISP parameters format should start from the
+ * Future revisions of the V4L2 ISP serialization format should start from the
* value of 2.
*/
-enum v4l2_isp_params_version {
- V4L2_ISP_PARAMS_VERSION_V0 = 0,
- V4L2_ISP_PARAMS_VERSION_V1
+enum v4l2_isp_version {
+ V4L2_ISP_VERSION_V0 = 0,
+ V4L2_ISP_VERSION_V1
};
+/*
+ * Compatibility with existing users of v4l2_isp_params which pre-date the
+ * introduction of v4l2_isp_stats.
+ */
+#define v4l2_isp_params_version v4l2_isp_version
+#define V4L2_ISP_PARAMS_VERSION_V0 V4L2_ISP_VERSION_V0
+#define V4L2_ISP_PARAMS_VERSION_V1 V4L2_ISP_VERSION_V1
+
#define V4L2_ISP_PARAMS_FL_BLOCK_DISABLE (1U << 0)
#define V4L2_ISP_PARAMS_FL_BLOCK_ENABLE (1U << 1)
> > > >
> > > > > > are provided to match with params versions. On the other side, ENABLE and
> > > > > > DISABLE flags are not really meaningfull for statistics purpose. So VALID
> > > > > > and INVALID flags are introduced. Purpose is to force ISP driver to
> > > > > > validate a statistics buffer, before it is consumed by userspace.
> > > > >
> > > > > Interesting. What do you mean with "validate a statistics buffer" ?
> > > > > And if a driver has to do validation, why would it send upstream a
> > > > > non-validated buffer ?
> > > >
> > > > Like for version, I wanted to keep same header structure, including flags.
> > > > Since ENABLE/DISABLE is not relevant for statistics, I thought about using a
> > > > "validation" flag, to force driver confirming statistics blocks are valid or
> > > > not.
> > >
> > > See the question on the documentation patches.
> > >
> > > > If you feel it is useless, I'm fine with removing it. Should I keep a flag
> > > > field anyway to stay aligned with params then ?
> > >
> > > RkISP1 has support for both "legacy" and "extensible" formats because
> > > it has been mainline for a long time with the legacy format only. We
> > > couldn't simply replace the existing format with the new one because
> > > we would break existing users.
> > >
> > > All the other drivers that have been upstreamed with extensible only
> > > (Amlogic C3 and Mali C55) do not expose a legacy format as there was
> > > not prior version in mainline on which userspace might depend on.
> > >
> > > Unless you have very convincing reason, I would certainly drop the
> > > legacy format and only use extensible.
> >
> > I agree with that, for upstream we shouldn't carry legacy formats in new
> > drivers. I've read elsewhere in this thread that it won't cause issues,
> > otherwise I would have recommended carrying an extra patch in the BSP
> > kernel to implement legacy formats, and only use extensible formats
> > upstream.
>
> ok. I'm fine with removing legacy format from neo driver, and keep it only
> in downstream for some time.
>
Thank you!
> >
> > > > > > Signed-off-by: Antoine Bouyer <antoine.bouyer@nxp.com>
> > > > > > ---
> > > > > > include/uapi/linux/media/v4l2-isp.h | 85 +++++++++++++++++++++++++++++
> > > > > > 1 file changed, 85 insertions(+)
> > > > > >
> > > > > > diff --git a/include/uapi/linux/media/v4l2-isp.h b/include/uapi/linux/media/v4l2-isp.h
> > > > > > index 779168f9058e..ed1279b86694 100644
> > > > > > --- a/include/uapi/linux/media/v4l2-isp.h
> > > > > > +++ b/include/uapi/linux/media/v4l2-isp.h
> > > > > > @@ -99,4 +99,89 @@ struct v4l2_isp_params_buffer {
> > > > > > __u8 data[] __counted_by(data_size);
> > > > > > };
> > > > > >
> > > > > > +/**
> > > > > > + * enum v4l2_isp_stats_version - V4L2 ISP statistics versioning
> > > > > > + *
> > > > > > + * @V4L2_ISP_STATS_VERSION_V0: First version of the V4L2 ISP statistics format
> > > > > > + * (for compatibility)
> > > > > > + * @V4L2_ISP_STATS_VERSION_V1: First version of the V4L2 ISP statistics format
> > > > > > + *
> > > > > > + * V0 and V1 are identical, and comply with V4l2 ISP parameters versions. So
> > > > > > + * both V0 and V1 refers to the first version of the V4L2 ISP statistics
> > > > > > + * format.
> > > > > > + *
> > > > > > + * Future revisions of the V4L2 ISP statistics format should start from the
> > > > > > + * value of 2.
> > > > > > + */
> > > > > > +enum v4l2_isp_stats_version {
> > > > > > + V4L2_ISP_STATS_VERSION_V0 = 0,
> > > > > > + V4L2_ISP_STATS_VERSION_V1,
> > > > >
> > > > > As suggested I would make V1 == 0
> > > > >
> > > > > > +};
> > > > > > +
> > > > > > +#define V4L2_ISP_PARAMS_FL_BLOCK_VALID (1U << 0)
> > > > > > +#define V4L2_ISP_PARAMS_FL_BLOCK_INVALID (1U << 1)
> > > > > > +
> > > > > > +/*
> > > > > > + * Reserve the first 8 bits for V4L2_ISP_STATS_FL_* flag.
> > > > > > + *
> > > > > > + * Driver-specific flags should be defined as:
> > > > > > + * #define DRIVER_SPECIFIC_FLAG0 ((1U << V4L2_ISP_STATS_FL_DRIVER_FLAGS(0))
> > > > > > + * #define DRIVER_SPECIFIC_FLAG1 ((1U << V4L2_ISP_STATS_FL_DRIVER_FLAGS(1))
> > > > > > + */
> > > > > > +#define V4L2_ISP_STATS_FL_DRIVER_FLAGS(n) ((n) + 8)
> > > > >
> > > > > Currently we have no users of V4L2_ISP_PARAMS_FL_DRIVER_FLAGS so we
> > > > > could even consider making it a V4L2_ISP_FL_DRIVER_FLAGS
> > > > >
> > > > > Or do you think it is worth creating a new symbol ?
> > > >
> > > > To limit impact on potential on-going development, and future conflict,
> > > > creating new symbol may be safer IMO. But I'm fine with using a single
> > > > symbol if you prefer. Most probably this flag customization is not used yet
> > > > by any driver.
> > > >
> > > > > > +
> > > > > > +/**
> > > > > > + * struct v4l2_isp_stats_block_header - V4L2 extensible statistics block header
> > > > > > + * @type: The statistics block type (driver-specific)
> > > > > > + * @flags: A bitmask of block flags (driver-specific)
> > > > > > + * @size: Size (in bytes) of the statistics block, including this header
> > > > > > + *
> > > > > > + * This structure represents the common part of all the ISP statistics blocks.
> > > > > > + * Each statistics block shall embed an instance of this structure type as its
> > > > > > + * first member, followed by the block-specific statistics data.
> > > > > > + *
> > > > > > + * The @type field is an ISP driver-specific value that identifies the block
> > > > > > + * type. The @size field specifies the size of the parameters block.
> > > > > > + *
> > > > > > + * The @flags field is a bitmask of per-block flags V4L2_STATS_ISP_FL_* and
> > > > > > + * driver-specific flags specified by the driver header.
> > > > > > + */
> > > > > > +struct v4l2_isp_stats_block_header {
> > > > > > + __u16 type;
> > > > > > + __u16 flags;
> > > > > > + __u32 size;
> > > > > > +} __attribute__((aligned(8)));
> > > > > > +
> > > > >
> > > > > This is currently identical to v4l2_isp_params_block_header.
> > > > >
> > > > > Can we create a single header for both stats and params and provide a
> > > > >
> > > > > #define v4l2_isp_params_block_header v4l2_isp_block_header
> > > > >
> > > > > for maintaining compatibility with existing users ?
> > > > >
> > > > > Or do you expect stats and params to eventually need different headers ?
> > > >
> > > > Current approach is to use same structure definitions as for params. So I'm
> > > > fine with creating a single header as suggested, and provide symbols to keep
> > > > compatibility.
> > > >
> > > > > > +/**
> > > > > > + * struct v4l2_isp_stats_buffer - V4L2 extensible statistics data
> > > > > > + * @version: The statistics buffer version (driver-specific)
> > > > > > + * @data_size: The statistics data effective size, excluding this header
> > > > > > + * @data: The statistics data
> > > > > > + *
> > > > > > + * This structure contains the statistics information of the ISP hardware,
> > > > > > + * serialized for userspace into a data buffer. Each statistics block is
> > > > > > + * represented by a block-specific structure which contains a
> > > > > > + * :c:type:`v4l2_isp_stats_block_header` entry as first member. Driver
> > > > > > + * populates the @data buffer with statistics information of the ISP blocks it
> > > > > > + * intends to share to userspace. As a consequence, the data buffer effective
> > > > > > + * size changes according to the number of ISP blocks that driver intends to
> > > > > > + * provide and is set by the driver in the @data_size field.
> > > > > > + *
> > > > > > + * The statistics buffer is versioned by the @version field to allow modifying
> > > > > > + * and extending its definition. Driver shall populate the @version field to
> > > > > > + * inform the userpsace about the version it intends to use. The userspace will
> > > > > > + * parse and handle the @data buffer according to the data layout specific to
> > > > > > + * the indicated version.
> > > > > > + *
> > > > > > + * For each ISP block that driver wants to report, a block-specific structure
> > > > > > + * is appended to the @data buffer, one after the other without gaps in
> > > > > > + * between. Driver shall populate the @data_size field with the effective
> > > > > > + * size, in bytes, of the @data buffer.
> > > > > > + */
> > > > > > +struct v4l2_isp_stats_buffer {
> > > > > > + __u32 version;
> > > > > > + __u32 data_size;
> > > > > > + __u8 data[] __counted_by(data_size);
> > > > > > +};
> > > > > > +
> > > > >
> > > > > Same question. Should we introduce a struct v4l2_isp_buffer ?
> > > >
> > > > Yes, sounds reasonable.
> >
> > That seems to make sense. Once we'll have a driver using
> > v4l2_isp_stats_buffer the structure will become ABI. If it then is an
> > exact copy of v4l2_isp_params_buffer, it would make sense to unify them.
> > Let's see what will happen after a few review rounds, if we end up
> > requiring separate fields in the stats buffer header.
>
> ok to use same struct for both.
>
> >
> > It would also be nice to implement support for extensible stats in a
> > second driver to test the API.
>
> What is your preferred approach then ?
>
> Should I "split" v4l2_isp rework in different patchset BUT with another
> driver using it (with userspace changes I guess). Not something I'm really
> comfortable with since I only focused on i.MX95 isp so far. But if this is
> the only way, that could be evaluated.
>
> Or should I "keep" v4l2_isp changes together with neoisp introduction ?
It depends what you expect the timing for the next version of neoisp
to be.
However, to introduce new uAPI it is generally suggested to have at
least one user, so if time aligns I would keep the two together.
Thanks
j
>
> Thanks
>
> Best regards
> Antoine
>
> >
> > > > > > #endif /* _UAPI_V4L2_ISP_H_ */
> >
> > --
> > Regards,
> >
> > Laurent Pinchart
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [RFC v1 00/11] Add iMX95 neoisp driver
[not found] ` <aYRSMXHjFC0M_DM_@zed>
2026-02-23 12:38 ` [RFC v1 00/11] Add iMX95 neoisp driver Julien Vuillaumier
@ 2026-03-20 16:29 ` Antoine Bouyer
2026-03-23 13:18 ` Jacopo Mondi
1 sibling, 1 reply; 14+ messages in thread
From: Antoine Bouyer @ 2026-03-20 16:29 UTC (permalink / raw)
To: Jacopo Mondi
Cc: Michael Riesch, julien.vuillaumier, alexi.birlinger,
daniel.baluta, peng.fan, frank.li, laurent.pinchart, mchehab,
robh, krzk+dt, conor+dt, shawnguo, s.hauer, kernel, festevam,
linux-kernel, linux-media, devicetree, linux-arm-kernel,
niklas soderlund, Anthony McGivern
Hi Jacopo
Quite some updates regarding this RFC after further analysis.
Le 05/02/2026 à 10:40, Jacopo Mondi a écrit :
>
>
> Hi Antoine
>
> On Wed, Feb 04, 2026 at 07:30:18PM +0100, Antoine Bouyer wrote:
>> Hi Jacopo
>>
>> Le 04/02/2026 à 18:12, Jacopo Mondi a écrit :
>>>
>>> Hello,
>>>
>>> On Tue, Feb 03, 2026 at 07:37:34PM +0100, Jacopo Mondi wrote:
>>>> Hello
>>>>
>>>> On Thu, Jan 29, 2026 at 12:00:24AM +0100, Michael Riesch wrote:
>>>>> Hi Antoine,
>>>>>
>>>>> Thanks for your response.
>>>>>
>>>>> On 1/28/26 09:17, Antoine Bouyer wrote:
>>>>>> Hi Michael
>>>>>>
>>>>>> On 1/26/26 10:44 AM, Michael Riesch wrote:
>>>>>>>
>>>>>>>
>>>>>>> Hi Antoine,
>>>>>>>
>>>>>>> On 1/23/26 09:09, Antoine Bouyer wrote:
>>>>>>>> Hi all,
>>>>>>>>
>>>>>>>> This RFC patch series introduces the NXP Neo Image Signal Processor
>>>>>>>> (ISP)
>>>>>>>> driver, used in the NXP i.MX95 SoC and future devices in the i.MX9
>>>>>>>> family.
>>>>>>>> The series also includes updates to the generic v4l2-isp interface to
>>>>>>>> support extended statistics required by the Neo ISP.
>>>>>>>>
>>>>>>>> The Neo ISP processes one or more camera streams, converting RAW formats
>>>>>>>> into YUV or RGB outputs. Its architecture is largely influenced by the
>>>>>>>> PISP driver. The hardware supports up to eight contexts, with three sink
>>>>>>>> pads (main input, HDR input, and parameter buffers) and three source
>>>>>>>> pads
>>>>>>>> (RGB output, IR output, and statistics metadata).
>>>>>>>>
>>>>>>>> At this stage, both legacy (fixed-size) and extensible (dynamic-size)
>>>>>>>> parameter/statistics buffers are supported through the generic v4l2-isp
>>>>>>>> framework, similar to rkisp1 and Mali-C55. The driver currently supports
>>>>>>>> M2M operation; direct CSI-to-ISP streaming is not yet implemented.
>>>>>>>
>>>>>>> How do you envisage the direct CSI-to-ISP streaming shall be supported?
>>>>>>
>>>>>> At this stage, this streaming mode still needs to be evaluated on
>>>>>> neoisp. We should follow the integration model used by existing ISP
>>>>>> drivers to avoid duplicating solutions.
>>>>>
>>>>> Fair point, but I have had the impression that there are not many
>>>>> examples (if any). The rkisp1 driver, for instance, only supports inline
>>>>> mode although the HW should be able to do both.
>>>>>
>>>>> But any pointers most welcome, I won't claim I have the full overview.
>>>>>
>>>>>>
>>>>>> Below are my initial thoughts on the specific points you raised:
>>>>>>
>>>>>>> - How shall the final media graph(s) look like?
>>>>>>
>>>>>> The media entities would remain mostly identical, except for the absence
>>>>>> of ISI. The topology would be a direct linkg from sensor->csi-
>>>>>>> formatter->neoisp.
>>>>
>>>> If support for inline mode has to be added later, the ISP will need to
>>>> be registered in the same media graph of the CSI-2 receiver to be able
>>>> to link the two, right ?
>>
>> yes correct.
>>
>>>>
>>>> How do you envision to control the ISP operating mode, because I'm
>>>> afraid if you register the ISP in its own media graph, you're locking
>>>> yourself there as implementing inline mode would require a different
>>>> media topology with all the implications on the rest of the userspace
>>>> stack.
>>>>
>>>> This might not be a problem if you know that the inline vs m2m mode is
>>>> SoC sythesis time parameter. Some SoCs will integrate neoisp inline, some
>>>> other as m2m. In this case you'll likely need two pipeline handlers
>>>> in libcamera, but if that's per SoC-line maybe is acceptable. The fact
>>>> you suggests in inline mode there won't be an ISI makes me think this
>>>> actually depends on the SoC design ?
>>
>> Actually, this is not really at SoC synthesis time, neoisp HW does support
>> both modes, that is configurable. But ISP HW can run in a single mode only
>
>> once it is configured. Streaming mode is tightly coupled with CSI HW, then
>> ISP cannot be used in M2M mode with another sensor simultaneously.
>>
>
> Yes, my point is trying to understand "how it is configured" and what
> your expectations are.
>
> Will the board .dts (or a camera .dtso) decide how the ISP is operated
> by defining its endpoint connections ? Assuming with the same SoC both
> inline and m2m modes are possible, without differences in the SoC
> design/integration, will users of the same board have to modify the
> .dts or load ad-hoc .dtso to decide what mode is in use ?
>
> Then, the question of how the media topology will look and which
> components registers what has to be clarified.
>
> Let's try to make a taxonomy of the cases we have in mainline (or on
> their way to mainline).
>
> In the mali example I mentioned, the operating mode is selected by the
> .dtsi as Mali can be integrated either inline or in m2m mode in
> different SoCs. RZ/V2H in example, will always be m2m as it doesn't
> interface the CSI-2 receiver with the ISP but rather interfaces the
> ISP with a companion chip the performs memory access on its behalf
> (the IVC). A different design that incorporates Mali inline will
> instead have to interface the CSI-2 receiver with the ISP with
> internal busses/glue logic and will then have to described this in dts.
>
> This is fine as the ISP integration is different and then having the
> description in dts is legit.
>
> The ISP driver unconditionally registers an async notifier and the
> downstream component (csi-2 or IVC) will register its async subdev(s)
> which will all appear in the ISP media graph. This is possible because
> the assumption is that the CSI-2 receiver (or the companion chip)
> won't register their own media graph.
>
> The Renesas V4H example I mentioned is instead different. The ISP can
> be operated in inline and m2m, on the same SoC without any
> modification to hardware and to the dts/dtsi. It's basically a user
> choice we defer to runtime.
>
> The V4H already has a component that registers a media graph: the
> CSI-2/VIN block which is found in many SoCs of the same (and older)
> generations. The ISP is present only in some SoC, but the CSI-2/VIN is
> always there. In this case, to support both inline and m2m modes, the
> VIN registers the media device and, with the trick I pointed you to in
> Niklas' code, the ISP registers a subdev in the VIN media graph. Then
> the inline/m2m mode can be selected by media link enablement at
> run-time. Now, inline mode is not yet supported on V4H and there might
> be dragons there, but at least, both modes should be possible on the same
> SoC.
>
> On the other extremes we have the RaspberryPi PiSP BE and RkISP1.
>
> RPi knows the only SoC where the PiPS will be found is their one. The
> ISP cannot function inline and will always be m2m. In this case, a
> dedicated media graph for the ISP is the simplest and cleanest
> solution.
>
> RkISP1 instead will always be inline only. It registers a media device
> and an async notifier, the connected CSI-2 receiver will register an
> async subdev and will be connected to the device tree endpoint of the
> ISP device node.
>
> What model is the closest one to the neoisp integration that you
> envision on NXP SoCs ?
Then the closest model is the V4H one I believe: we both support m2m and
streaming (inline) modes on the same SoC. I tested the trick you pointed
out, and let the formatter sharing the media device (owned by ISI) to
the neo ISP, like renesas csisp does. It registers as expected, thanks
for the proposal !
I think formatter is a good candidate since it is physically connected
to ISP through a pixel link for streaming mode. Moreover, I propose to
create a dedicated pad b/w formatter and ISP and keep the one b/w
formatter and ISI as it is, so that in future we can configure the
stream format which is sent to ISP, and the one sent to ISI.
I also tested the streaming path can be added in device tree with
endpoint connections between the nodes, so that ISP can create the media
link when it registers itself to the media device.
Thus at runtime, if userspace enables this link, then neo runs in
streaming mode, otherwise m2m is used.
If another SoC in future doesn't support streaming path, the endpoints
can be removed from device tree, the ISP would stay in media graph
anyway with m2m mode only.
Do you think this is good approach ?
>
>>>
>>> One small correction after some more research:
>>>
>>> we actually already have a pipeline in libcamera that supports inline
>>> and (will soon) support m2m: the mali c55 one. My take on "probably
>>> need two pipeline handlers" was not correct then.
>>
>> Yes, I saw your patchwork on libcamera about this coming upgrade. Spent some
>> time analyzing it ':) Seems we are quite aligned as per my understanding:
>> inline mode (i.e. streaming mode with neoisp) _or_ M2M mode using IVC video
>> device from Mali. Is that right ?
>>
>>>
>>> As said, Mali-C55 can be integrated inline or in m2m mode and this is
>>> decided based on the device tree endpoint connections.
>>
>> Good. Do you have an example available ?
>
> It's in mainline, but there's nothing exciting there as the assumption
> is that there will always be a connection on the first endpoint and
> the driver simply registers a notifier for the connected async subdev. If
> it's a CSI-2 receiver then we're inline. If it's a companion chip
> we're m2m.
>
> The libcamera pipeline (not upstream yet) inspects the media entity
> function of the entity connected to the ISP sink pad#0. If it's a
> CSI-2 reciver we're inline. If it's not, we're m2m. Based on that it
> operated the pipeline differently.
>
>>
>>>
>>> So, if you know neoisp will be integrated either inline or m2m in
>>> different SoC lines, maybe deferring it to device tree is good enough
>>> at the expense of a slightly more complicated pipeline ?
>>
>> As said, SoC/ISP HW does support both modes. But I think that the selection
>> can be done in device tree too. So that after bootup, a camera will be used
>> only in 1 mode.
>>
>>>
>>> I guess this has implications on the bindings definition as well..
>>
>> Most probably yes. Can this be done as second phase once evaluation is
>> completed ?
>>
>
> I think you should asses from the very beginning what is the planned
> integration model of the ISP in order not to corner yourself in a
> place where it will be hard to support inline without re-writing
> the driver's media device registration logic.
>
> Looking at the below media graph of CSI/ISI you should ask the question "how
> will I register the ISP subdev in the CSI-2 media graph when inline"
> and "how will I describe inline vs m2m mode if the underlying hardware
> design doesn't change?" as deferring it to the .dts might not be the
> most correct way to go in that case ?
So I think we are aligned now: one media graph from the beginning for
supporting both modes, even if first mainline version only supports m2m.
Would that be ok ?
>
>>>
>>>>
>>>> However, if you plan to allow deferring inline/m2m mode selection to
>>>> the system integrators or even have it as a run-time parameter, then
>>>> you should really consider having the ISP in the same media graph as
>>>> the CSI-2 receiver and operate the whole CSI-2/ISI/ISP as a single
>>>> media graph, where you could select the operating mode through media link
>>>> enablement or dts endpoint connections
>>>>
>>>> Niklas (in cc) has addressed a similar situation, where inline and m2m
>>>> mode can be selected by link enablement at runtime here
>>>> https://patchwork.linuxtv.org/project/linux-media/patch/20251225171054.1370856-3-niklas.soderlund+renesas@ragnatech.se/
>>>> (see risp_cs_internal_ops)
>>>>
>>>>>
>>>>> OK, I thought that ISI was still around...
>>>>>
>>>>>>
>>>>>>> - How many media devices are registered and which driver registers it
>>>>>>> or them?
>>>>>>
>>>>>> That will be part of the evaluation. My initial assumption is that
>>>>>> neoisp would be the appropriate component to register the media device
>>>>>> in this mode, since ISI is not involved, and ISI currently performs the
>>>>>> registration in the M2M configuration.
>>>>
>>>> Isn't the ISP registering its own media graph ?
>>
>> Yes, 8 copies of ISP media graph, that can be used with the 8 output video
>> devices of the ISI media graph.
>>
>
> I suggest you do what RPi does. The mainline driver only registers one
> instance and they carry a little patch downstream that implements the
> for() loop where multiple instances are registered. Duplicating media graphs
> is not desirable (at least in mainline) as we can have ISPs with 256
> contexts, we don't want 256 media graphs.
Ok. Will do same approach then: 1 neoisp instance on mainline +
downstream patch to create other instances (x8), all in same media graph.
>
> A framework level solution with proper priority handling and job
> scheduling is what is required and that's what the context work should
> end up being.>
>
>>>>
>>>> Can we get a copy of all media graphs on an i.MX95 system including
>>>> the ISI and the CSI-2 receiver ?
>>
>> Here is an example with multiple sensors. Or do you need it in another
>> format ?
>
> No it's fine, thanks!
>
>>
>>
>> digraph board {
>> rankdir=TB
>> n00000001 [label="{{<port0> 0 | <port1> 1 | <port2> 2 | <port3> 3 |
>> <port4> 4} | crossbar\n/dev/v4l-subdev8 | {<port5> 5 | <port6> 6 | <port7> 7
>> | <port8> 8 | <port9> 9 | <port10> 10 | <port11> 11 | <port12> 12}}",
>> shape=Mrecord, style=filled, fillcolor=green]
>> n00000001:port5 -> n0000000f:port0 [style=bold]
>> n00000001:port6 -> n0000001a:port0 [style=bold]
>> n00000001:port7 -> n00000025:port0 [style=bold]
>> n00000001:port8 -> n00000030:port0 [style=bold]
>> n00000001:port9 -> n0000003b:port0 [style=bold]
>> n00000001:port10 -> n00000046:port0 [style=bold]
>> n00000001:port11 -> n00000051:port0 [style=bold]
>> n00000001:port12 -> n0000005c:port0 [style=bold]
>> n0000000f [label="{{<port0> 0} | mxc_isi.0\n/dev/v4l-subdev9 |
>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>> n0000000f:port1 -> n00000012 [style=bold]
>> n00000012 [label="mxc_isi.0.capture\n/dev/video8", shape=box,
>> style=filled, fillcolor=yellow]
>> n0000001a [label="{{<port0> 0} | mxc_isi.1\n/dev/v4l-subdev10 |
>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>> n0000001a:port1 -> n0000001d [style=bold]
>> n0000001d [label="mxc_isi.1.capture\n/dev/video9", shape=box,
>> style=filled, fillcolor=yellow]
>> n00000025 [label="{{<port0> 0} | mxc_isi.2\n/dev/v4l-subdev11 |
>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>> n00000025:port1 -> n00000028 [style=bold]
>> n00000028 [label="mxc_isi.2.capture\n/dev/video10", shape=box,
>> style=filled, fillcolor=yellow]
>> n00000030 [label="{{<port0> 0} | mxc_isi.3\n/dev/v4l-subdev12 |
>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>> n00000030:port1 -> n00000033 [style=bold]
>> n00000033 [label="mxc_isi.3.capture\n/dev/video13", shape=box,
>> style=filled, fillcolor=yellow]
>> n0000003b [label="{{<port0> 0} | mxc_isi.4\n/dev/v4l-subdev13 |
>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>> n0000003b:port1 -> n0000003e [style=bold]
>> n0000003e [label="mxc_isi.4.capture\n/dev/video14", shape=box,
>> style=filled, fillcolor=yellow]
>> n00000046 [label="{{<port0> 0} | mxc_isi.5\n/dev/v4l-subdev14 |
>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>> n00000046:port1 -> n00000049 [style=bold]
>> n00000049 [label="mxc_isi.5.capture\n/dev/video21", shape=box,
>> style=filled, fillcolor=yellow]
>> n00000051 [label="{{<port0> 0} | mxc_isi.6\n/dev/v4l-subdev15 |
>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>> n00000051:port1 -> n00000054 [style=bold]
>> n00000054 [label="mxc_isi.6.capture\n/dev/video22", shape=box,
>> style=filled, fillcolor=yellow]
>> n0000005c [label="{{<port0> 0} | mxc_isi.7\n/dev/v4l-subdev16 |
>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>> n0000005c:port1 -> n0000005f [style=bold]
>> n0000005f [label="mxc_isi.7.capture\n/dev/video23", shape=box,
>> style=filled, fillcolor=yellow]
>> n00000067 [label="mxc_isi.output\n", shape=box, style=filled,
>> fillcolor=yellow]
>> n00000067 -> n00000001:port4 [style=bold]
>> n0000006e [label="{{<port0> 0} |
>> 4ac10000.syscon:formatter@20\n/dev/v4l-subdev17 | {<port1> 1}}",
>> shape=Mrecord, style=filled, fillcolor=green]
>> n0000006e:port1 -> n00000001:port2 [style=bold]
>> n00000073 [label="{{<port0> 0} |
>> csidev-4ad30000.csi\n/dev/v4l-subdev18 | {<port1> 1}}", shape=Mrecord,
>> style=filled, fillcolor=green]
>> n00000073:port1 -> n0000006e:port0 [style=bold]
>> n00000078 [label="{{<port0> 0 | <port1> 1 | <port2> 2 | <port3> 3} |
>> max96724 2-0027\n/dev/v4l-subdev19 | {<port4> 4 | <port5> 5}}",
>> shape=Mrecord, style=filled, fillcolor=green]
>> n00000078:port4 -> n00000073:port0 [style=dashed]
>> n00000081 [label="{{} | mx95mbcam 8-0040\n/dev/v4l-subdev20 |
>> {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
>> n00000081:port0 -> n00000078:port0 [style=bold]
>> n00000085 [label="{{} | mx95mbcam 9-0040\n/dev/v4l-subdev21 |
>> {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
>> n00000085:port0 -> n00000078:port1 [style=bold]
>> n00000089 [label="{{} | mx95mbcam 10-0040\n/dev/v4l-subdev22 |
>> {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
>> n00000089:port0 -> n00000078:port2 [style=bold]
>> n0000008d [label="{{} | mx95mbcam 11-0040\n/dev/v4l-subdev23 |
>> {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
>> n0000008d:port0 -> n00000078:port3 [style=bold]
>> }
>>
>>
>>>>
>>>> If I'm not mistaken you'll have 8 copies of the ISP media graphs, and
>>>> that's exactly what we're working on with the context framework :)
>>>>
>>
>> Ok. Then I should have a look to context framework too ...
>>
>
> Please, I hope to be able to resume working on it sooner or later
> given the right use case.
Ok. Will continue monitoring the multi context work. Seems to be a nice
feature indeed. But as impact on userspace is more significant, that can
be done as a second step I guess, and will keep the multi instance
downstream patch meanwhile.
>
>>>>
>>>>>
>>>>> ... since it is not, your assumption seems very reasonable.
>>>>>
>>>>>>
>>>>>>> - How can the user decide whether direct (csi2isp) or indirect
>>>>>>> (mem2mem) streaming shall be used?
>>>>>>
>>>>>> That will also be part of the evaluation. From dts would be my first
>>>>>> option, but may prevent using both modes on same platform then.
>>>>>
>>>>> Of course this depends what the hardware is able to do, but in case the
>>>>> HW is reconfigurable easily, I doubt that device tree is a good choice
>>>>> to solve that.
>>>>>>
>>>>>>>
>>>>>>> While it is certainly OK to introduce this support only at a later
>>>>>>> stage, it makes sense to consider this right from the start to avoid
>>>>>>> some nasty changes e.g. in how this hardware is exposed to user space.
>>>>>>>
>>>>>>> Also, we are facing a similiar challenge with recent Rockchip ISP
>>>>>>> hardware (RK3588, RK3576, ...) and it would be great to hear your
>>>>>>> thoughts about that.
>>>>>>
>>>>>> Is there an existing discussion thread available on this topic? I would
>>>>>> be very interested in following it.
>>>>>
>>>>> Not yet, I am afraid. But there should be one or two soon (TM) :-)
>>>>
>>>> It's probably time to have one :)
>>
>> Good. Please loop me in ;)
>
> You are in, this is the conversation ;)
>
> It might be a good discussion point for the media summit in Nice
> co-located with Embedded Recipes if people with interest in the topic
> will going the be there.
Great ! Will try to join then.
BR
Antoine
>
> I'm also adding Anthony from ARM as I know he's going through the same
> inline/m2m duality you're now facing.
>
> Thanks
> j
>
>>
>> BR
>> Antoine
>>
>>>>
>>>>>
>>>>> Thanks and regards,
>>>>> Michael
>>>>>
>>>>>>
>>>>>> Thanks
>>>>>> Antoine
>>>>>>
>>>>>>>
>>>>>>> Thanks in advance and best regards,
>>>>>>> Michael
>>>>>>>
>>>>>>>>
>>>>>>>> This series is posted as RFC because extending the v4l2-isp interface
>>>>>>>> may
>>>>>>>> overlap with ongoing work. If similar development already exists, I am
>>>>>>>> happy to rebase or adapt the series accordingly. If preferred, the
>>>>>>>> series
>>>>>>>> can also be split into two parts: the v4l2-isp rework and the Neo ISP
>>>>>>>> driver introduction.
>>>>>>>>
>>>>>>>> A few checkpatch warnings in v4l2-ioctl.c remain intentionally to stay
>>>>>>>> consistent with the existing style in that file.
>>>>>>>>
>>>>>>>> Testing was performed on the i.MX95 EVK using the media/next kernel in
>>>>>>>> standalone M2M mode. End-to-end camera-to-ISP capture has been validated
>>>>>>>> using the downstream NXP kernel, as some hardware dependencies are not
>>>>>>>> yet upstreamed.
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Antoine
>>>>>>>>
>>>>>>>> ---
>>>>>>>> Here are v4l2-compliance test results:
>>>>>>>>
>>>>>>>> v4l2-compliance 1.28.1-5233, 64 bits, 64-bit time_t
>>>>>>>> v4l2-compliance SHA: fc15e229d9d3 2024-07-23 19:22:15
>>>>>>>>
>>>>>>>> Compliance test for neoisp device /dev/media0:
>>>>>>>>
>>>>>>>> Media Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Model : neoisp
>>>>>>>> Serial :
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Media version : 6.19.0
>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>> Driver version : 6.19.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:
>>>>>>>> test MEDIA_IOC_G_TOPOLOGY: OK
>>>>>>>> Entities: 7 Interfaces: 7 Pads: 12 Links: 13
>>>>>>>> test MEDIA_IOC_ENUM_ENTITIES/LINKS: OK
>>>>>>>> test MEDIA_IOC_SETUP_LINK: OK
>>>>>>>>
>>>>>>>> Total for neoisp device /dev/media0: 8, Succeeded: 8, Failed: 0,
>>>>>>>> Warnings: 0
>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>> Compliance test for neoisp device /dev/video0:
>>>>>>>>
>>>>>>>> Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Card type : neoisp
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>> Video Capture Multiplanar
>>>>>>>> Video Output Multiplanar
>>>>>>>> Metadata Capture
>>>>>>>> Metadata Output
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Device Capabilities
>>>>>>>> Device Caps : 0x04202000
>>>>>>>> Video Output Multiplanar
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Media Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Model : neoisp
>>>>>>>> Serial :
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Media version : 6.19.0
>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Interface Info:
>>>>>>>> ID : 0x0300000a
>>>>>>>> Type : V4L Video
>>>>>>>> Entity Info:
>>>>>>>> ID : 0x00000008 (8)
>>>>>>>> Name : neoisp-input0
>>>>>>>> Function : V4L2 I/O
>>>>>>>> Pad 0x01000009 : 0: Source
>>>>>>>> Link 0x0200000c: to remote pad 0x1000002 of entity
>>>>>>>> 'neoisp' (Image Signal Processor): Data, Enabled, Immutable
>>>>>>>>
>>>>>>>> Required ioctls:
>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test invalid ioctls: OK
>>>>>>>>
>>>>>>>> Allow for multiple opens:
>>>>>>>> test second /dev/video0 open: OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>> test for unlimited opens: OK
>>>>>>>>
>>>>>>>> Debug ioctls:
>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>
>>>>>>>> Input ioctls:
>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>
>>>>>>>> Output ioctls:
>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>
>>>>>>>> Input/Output configuration ioctls:
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>
>>>>>>>> Control ioctls:
>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>
>>>>>>>> Format ioctls:
>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>> test Cropping: OK
>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>> test Scaling: OK
>>>>>>>>
>>>>>>>> Codec ioctls:
>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>
>>>>>>>> Buffer ioctls:
>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>
>>>>>>>> Total for neoisp device /dev/video0: 48, Succeeded: 48, Failed: 0,
>>>>>>>> Warnings: 0
>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>> Compliance test for neoisp device /dev/video1:
>>>>>>>>
>>>>>>>> Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Card type : neoisp
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>> Video Capture Multiplanar
>>>>>>>> Video Output Multiplanar
>>>>>>>> Metadata Capture
>>>>>>>> Metadata Output
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Device Capabilities
>>>>>>>> Device Caps : 0x04202000
>>>>>>>> Video Output Multiplanar
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Media Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Model : neoisp
>>>>>>>> Serial :
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Media version : 6.19.0
>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Interface Info:
>>>>>>>> ID : 0x03000010
>>>>>>>> Type : V4L Video
>>>>>>>> Entity Info:
>>>>>>>> ID : 0x0000000e (14)
>>>>>>>> Name : neoisp-input1
>>>>>>>> Function : V4L2 I/O
>>>>>>>> Pad 0x0100000f : 0: Source
>>>>>>>> Link 0x02000012: to remote pad 0x1000003 of entity
>>>>>>>> 'neoisp' (Image Signal Processor): Data
>>>>>>>>
>>>>>>>> Required ioctls:
>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test invalid ioctls: OK
>>>>>>>>
>>>>>>>> Allow for multiple opens:
>>>>>>>> test second /dev/video1 open: OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>> test for unlimited opens: OK
>>>>>>>>
>>>>>>>> Debug ioctls:
>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>
>>>>>>>> Input ioctls:
>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>
>>>>>>>> Output ioctls:
>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>
>>>>>>>> Input/Output configuration ioctls:
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>
>>>>>>>> Control ioctls:
>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>
>>>>>>>> Format ioctls:
>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>> test Cropping: OK
>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>> test Scaling: OK
>>>>>>>>
>>>>>>>> Codec ioctls:
>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>
>>>>>>>> Buffer ioctls:
>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>
>>>>>>>> Total for neoisp device /dev/video1: 48, Succeeded: 48, Failed: 0,
>>>>>>>> Warnings: 0
>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>> Compliance test for neoisp device /dev/video2:
>>>>>>>>
>>>>>>>> Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Card type : neoisp
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>> Video Capture Multiplanar
>>>>>>>> Video Output Multiplanar
>>>>>>>> Metadata Capture
>>>>>>>> Metadata Output
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Device Capabilities
>>>>>>>> Device Caps : 0x0c200000
>>>>>>>> Metadata Output
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Media Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Model : neoisp
>>>>>>>> Serial :
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Media version : 6.19.0
>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Interface Info:
>>>>>>>> ID : 0x03000016
>>>>>>>> Type : V4L Video
>>>>>>>> Entity Info:
>>>>>>>> ID : 0x00000014 (20)
>>>>>>>> Name : neoisp-params
>>>>>>>> Function : V4L2 I/O
>>>>>>>> Pad 0x01000015 : 0: Source
>>>>>>>> Link 0x02000018: to remote pad 0x1000004 of entity
>>>>>>>> 'neoisp' (Image Signal Processor): Data, Enabled
>>>>>>>>
>>>>>>>> Required ioctls:
>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test invalid ioctls: OK
>>>>>>>>
>>>>>>>> Allow for multiple opens:
>>>>>>>> test second /dev/video2 open: OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>> test for unlimited opens: OK
>>>>>>>>
>>>>>>>> Debug ioctls:
>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>
>>>>>>>> Input ioctls:
>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>
>>>>>>>> Output ioctls:
>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>
>>>>>>>> Input/Output configuration ioctls:
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>
>>>>>>>> Control ioctls:
>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>
>>>>>>>> Format ioctls:
>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>> test Cropping: OK (Not Supported)
>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>> test Scaling: OK (Not Supported)
>>>>>>>>
>>>>>>>> Codec ioctls:
>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>
>>>>>>>> Buffer ioctls:
>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>
>>>>>>>> Total for neoisp device /dev/video2: 48, Succeeded: 48, Failed: 0,
>>>>>>>> Warnings: 0
>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>> Compliance test for neoisp device /dev/video3:
>>>>>>>>
>>>>>>>> Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Card type : neoisp
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>> Video Capture Multiplanar
>>>>>>>> Video Output Multiplanar
>>>>>>>> Metadata Capture
>>>>>>>> Metadata Output
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Device Capabilities
>>>>>>>> Device Caps : 0x04201000
>>>>>>>> Video Capture Multiplanar
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Media Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Model : neoisp
>>>>>>>> Serial :
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Media version : 6.19.0
>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Interface Info:
>>>>>>>> ID : 0x0300001c
>>>>>>>> Type : V4L Video
>>>>>>>> Entity Info:
>>>>>>>> ID : 0x0000001a (26)
>>>>>>>> Name : neoisp-frame
>>>>>>>> Function : V4L2 I/O
>>>>>>>> Pad 0x0100001b : 0: Sink
>>>>>>>> Link 0x0200001e: from remote pad 0x1000005 of entity
>>>>>>>> 'neoisp' (Image Signal Processor): Data, Enabled
>>>>>>>>
>>>>>>>> Required ioctls:
>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test invalid ioctls: OK
>>>>>>>>
>>>>>>>> Allow for multiple opens:
>>>>>>>> test second /dev/video3 open: OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>> test for unlimited opens: OK
>>>>>>>>
>>>>>>>> Debug ioctls:
>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>
>>>>>>>> Input ioctls:
>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>
>>>>>>>> Output ioctls:
>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>
>>>>>>>> Input/Output configuration ioctls:
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>
>>>>>>>> Control ioctls:
>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>
>>>>>>>> Format ioctls:
>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>> test Cropping: OK (Not Supported)
>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>> test Scaling: OK
>>>>>>>>
>>>>>>>> Codec ioctls:
>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>
>>>>>>>> Buffer ioctls:
>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>
>>>>>>>> Total for neoisp device /dev/video3: 48, Succeeded: 48, Failed: 0,
>>>>>>>> Warnings: 0
>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>> Compliance test for neoisp device /dev/video4:
>>>>>>>>
>>>>>>>> Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Card type : neoisp
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>> Video Capture Multiplanar
>>>>>>>> Video Output Multiplanar
>>>>>>>> Metadata Capture
>>>>>>>> Metadata Output
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Device Capabilities
>>>>>>>> Device Caps : 0x04201000
>>>>>>>> Video Capture Multiplanar
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Media Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Model : neoisp
>>>>>>>> Serial :
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Media version : 6.19.0
>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Interface Info:
>>>>>>>> ID : 0x03000022
>>>>>>>> Type : V4L Video
>>>>>>>> Entity Info:
>>>>>>>> ID : 0x00000020 (32)
>>>>>>>> Name : neoisp-ir
>>>>>>>> Function : V4L2 I/O
>>>>>>>> Pad 0x01000021 : 0: Sink
>>>>>>>> Link 0x02000024: from remote pad 0x1000006 of entity
>>>>>>>> 'neoisp' (Image Signal Processor): Data
>>>>>>>>
>>>>>>>> Required ioctls:
>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test invalid ioctls: OK
>>>>>>>>
>>>>>>>> Allow for multiple opens:
>>>>>>>> test second /dev/video4 open: OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>> test for unlimited opens: OK
>>>>>>>>
>>>>>>>> Debug ioctls:
>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>
>>>>>>>> Input ioctls:
>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>
>>>>>>>> Output ioctls:
>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>
>>>>>>>> Input/Output configuration ioctls:
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>
>>>>>>>> Control ioctls:
>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>
>>>>>>>> Format ioctls:
>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>> test Cropping: OK (Not Supported)
>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>> test Scaling: OK
>>>>>>>>
>>>>>>>> Codec ioctls:
>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>
>>>>>>>> Buffer ioctls:
>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>
>>>>>>>> Total for neoisp device /dev/video4: 48, Succeeded: 48, Failed: 0,
>>>>>>>> Warnings: 0
>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>> Compliance test for neoisp device /dev/video5:
>>>>>>>>
>>>>>>>> Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Card type : neoisp
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>> Video Capture Multiplanar
>>>>>>>> Video Output Multiplanar
>>>>>>>> Metadata Capture
>>>>>>>> Metadata Output
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Device Capabilities
>>>>>>>> Device Caps : 0x04a00000
>>>>>>>> Metadata Capture
>>>>>>>> Streaming
>>>>>>>> Extended Pix Format
>>>>>>>> Media Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Model : neoisp
>>>>>>>> Serial :
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Media version : 6.19.0
>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Interface Info:
>>>>>>>> ID : 0x03000028
>>>>>>>> Type : V4L Video
>>>>>>>> Entity Info:
>>>>>>>> ID : 0x00000026 (38)
>>>>>>>> Name : neoisp-stats
>>>>>>>> Function : V4L2 I/O
>>>>>>>> Pad 0x01000027 : 0: Sink
>>>>>>>> Link 0x0200002a: from remote pad 0x1000007 of entity
>>>>>>>> 'neoisp' (Image Signal Processor): Data, Enabled
>>>>>>>>
>>>>>>>> Required ioctls:
>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test invalid ioctls: OK
>>>>>>>>
>>>>>>>> Allow for multiple opens:
>>>>>>>> test second /dev/video5 open: OK
>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>> test for unlimited opens: OK
>>>>>>>>
>>>>>>>> Debug ioctls:
>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>
>>>>>>>> Input ioctls:
>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>
>>>>>>>> Output ioctls:
>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>
>>>>>>>> Input/Output configuration ioctls:
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>
>>>>>>>> Control ioctls:
>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>
>>>>>>>> Format ioctls:
>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>> test Cropping: OK (Not Supported)
>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>> test Scaling: OK (Not Supported)
>>>>>>>>
>>>>>>>> Codec ioctls:
>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>
>>>>>>>> Buffer ioctls:
>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>
>>>>>>>> Total for neoisp device /dev/video5: 48, Succeeded: 48, Failed: 0,
>>>>>>>> Warnings: 0
>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>> Compliance test for neoisp device /dev/v4l-subdev0:
>>>>>>>>
>>>>>>>> Driver Info:
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Capabilities : 0x00000000
>>>>>>>> Client Capabilities: 0x0000000000000002
>>>>>>>> interval-uses-which Media Driver Info:
>>>>>>>> Driver name : neoisp
>>>>>>>> Model : neoisp
>>>>>>>> Serial :
>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>> Media version : 6.19.0
>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>> Driver version : 6.19.0
>>>>>>>> Interface Info:
>>>>>>>> ID : 0x0300002c
>>>>>>>> Type : V4L Sub-Device
>>>>>>>> Entity Info:
>>>>>>>> ID : 0x00000001 (1)
>>>>>>>> Name : neoisp
>>>>>>>> Function : Image Signal Processor
>>>>>>>> Pad 0x01000002 : 0: Sink
>>>>>>>> Link 0x0200000c: from remote pad 0x1000009 of entity
>>>>>>>> 'neoisp-input0' (V4L2 I/O): Data, Enabled, Immutable
>>>>>>>> Pad 0x01000003 : 1: Sink
>>>>>>>> Link 0x02000012: from remote pad 0x100000f of entity
>>>>>>>> 'neoisp-input1' (V4L2 I/O): Data
>>>>>>>> Pad 0x01000004 : 2: Sink
>>>>>>>> Link 0x02000018: from remote pad 0x1000015 of entity
>>>>>>>> 'neoisp-params' (V4L2 I/O): Data, Enabled
>>>>>>>> Pad 0x01000005 : 3: Source
>>>>>>>> Link 0x0200001e: to remote pad 0x100001b of entity 'neoisp-
>>>>>>>> frame' (V4L2 I/O): Data, Enabled
>>>>>>>> Pad 0x01000006 : 4: Source
>>>>>>>> Link 0x02000024: to remote pad 0x1000021 of entity 'neoisp-
>>>>>>>> ir' (V4L2 I/O): Data
>>>>>>>> Pad 0x01000007 : 5: Source
>>>>>>>> Link 0x0200002a: to remote pad 0x1000027 of entity 'neoisp-
>>>>>>>> stats' (V4L2 I/O): Data, Enabled
>>>>>>>>
>>>>>>>> Required ioctls:
>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>> test VIDIOC_SUDBEV_QUERYCAP: OK
>>>>>>>> test invalid ioctls: OK
>>>>>>>>
>>>>>>>> Allow for multiple opens:
>>>>>>>> test second /dev/v4l-subdev0 open: OK
>>>>>>>> test VIDIOC_SUBDEV_QUERYCAP: OK
>>>>>>>> test for unlimited opens: OK
>>>>>>>>
>>>>>>>> Debug ioctls:
>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>
>>>>>>>> Input ioctls:
>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>
>>>>>>>> Output ioctls:
>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>
>>>>>>>> Input/Output configuration ioctls:
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>
>>>>>>>> Sub-Device ioctls (Sink Pad 0):
>>>>>>>> Try Stream 0
>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> Active Stream 0
>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>
>>>>>>>> Sub-Device ioctls (Sink Pad 1):
>>>>>>>> Try Stream 0
>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> Active Stream 0
>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>
>>>>>>>> Sub-Device ioctls (Sink Pad 2):
>>>>>>>> Try Stream 0
>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> Active Stream 0
>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>
>>>>>>>> Sub-Device ioctls (Source Pad 3):
>>>>>>>> Try Stream 0
>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> Active Stream 0
>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>
>>>>>>>> Sub-Device ioctls (Source Pad 4):
>>>>>>>> Try Stream 0
>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> Active Stream 0
>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>
>>>>>>>> Sub-Device ioctls (Source Pad 5):
>>>>>>>> Try Stream 0
>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> Active Stream 0
>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>
>>>>>>>> Control ioctls:
>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
>>>>>>>> test VIDIOC_QUERYCTRL: OK
>>>>>>>> test VIDIOC_G/S_CTRL: OK
>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK
>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>> Standard Controls: 1 Private Controls: 1
>>>>>>>>
>>>>>>>> Format ioctls:
>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not
>>>>>>>> Supported)
>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>> test VIDIOC_G_FMT: OK (Not Supported)
>>>>>>>> test VIDIOC_TRY_FMT: OK (Not Supported)
>>>>>>>> test VIDIOC_S_FMT: OK (Not Supported)
>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>> test Cropping: OK (Not Supported)
>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>> test Scaling: OK (Not Supported)
>>>>>>>>
>>>>>>>> Codec ioctls:
>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>
>>>>>>>> Buffer ioctls:
>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK (Not Supported)
>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>> test VIDIOC_EXPBUF: OK (Not Supported)
>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>
>>>>>>>> Total for neoisp device /dev/v4l-subdev0: 88, Succeeded: 88, Failed:
>>>>>>>> 0, Warnings: 0
>>>>>>>>
>>>>>>>> Grand Total for neoisp device /dev/media0: 384, Succeeded: 384,
>>>>>>>> Failed: 0, Warnings: 0
>>>>>>>>
>>>>>>>> ---
>>>>>>>> Antoine Bouyer (11):
>>>>>>>> media: uapi: v4l2-isp: Add v4l2 ISP extensible statistics definitions
>>>>>>>> media: v4l2-isp: Add helper function to compute extended stats size
>>>>>>>> media: Documentation: uapi: Update V4L2 ISP for extensible stats
>>>>>>>> media: Documentation: Add NXP neoisp driver documentation
>>>>>>>> dt-bindings: media: Add nxp neoisp support
>>>>>>>> media: v4l2-ctrls: Add user control base for NXP neoisp controls
>>>>>>>> media: Add meta formats supported by NXP neoisp driver
>>>>>>>> media: uapi: Add NXP NEOISP user interface header file
>>>>>>>> media: platform: Add NXP Neoisp Image Signal Processor
>>>>>>>> media: platform: neoisp: Add debugfs support
>>>>>>>> arm64: dts: freescale: imx95: Add NXP neoisp device tree node
>>>>>>>>
>>>>>>>> .../admin-guide/media/nxp-neoisp-diagram.dot | 22 +
>>>>>>>> .../admin-guide/media/nxp-neoisp.dot | 16 +
>>>>>>>> .../admin-guide/media/nxp-neoisp.rst | 189 ++
>>>>>>>> .../admin-guide/media/v4l-drivers.rst | 1 +
>>>>>>>> .../devicetree/bindings/media/nxp,neoisp.yaml | 65 +
>>>>>>>> .../userspace-api/media/v4l/meta-formats.rst | 1 +
>>>>>>>> .../media/v4l/metafmt-nxp-neoisp.rst | 114 +
>>>>>>>> .../userspace-api/media/v4l/v4l2-isp.rst | 42 +-
>>>>>>>> MAINTAINERS | 9 +
>>>>>>>> .../boot/dts/freescale/imx95-19x19-evk.dts | 4 +
>>>>>>>> arch/arm64/boot/dts/freescale/imx95.dtsi | 11 +
>>>>>>>> drivers/media/platform/nxp/Kconfig | 1 +
>>>>>>>> drivers/media/platform/nxp/Makefile | 1 +
>>>>>>>> drivers/media/platform/nxp/neoisp/Kconfig | 15 +
>>>>>>>> drivers/media/platform/nxp/neoisp/Makefile | 8 +
>>>>>>>> drivers/media/platform/nxp/neoisp/neoisp.h | 270 ++
>>>>>>>> .../media/platform/nxp/neoisp/neoisp_ctx.c | 2798 +++++++++++++++++
>>>>>>>> .../media/platform/nxp/neoisp/neoisp_ctx.h | 85 +
>>>>>>>> .../platform/nxp/neoisp/neoisp_debugfs.c | 503 +++
>>>>>>>> .../media/platform/nxp/neoisp/neoisp_fmt.h | 509 +++
>>>>>>>> drivers/media/platform/nxp/neoisp/neoisp_hw.h | 577 ++++
>>>>>>>> .../media/platform/nxp/neoisp/neoisp_main.c | 1999 ++++++++++++
>>>>>>>> .../media/platform/nxp/neoisp/neoisp_nodes.h | 60 +
>>>>>>>> .../media/platform/nxp/neoisp/neoisp_regs.h | 2501 +++++++++++++++
>>>>>>>> drivers/media/v4l2-core/v4l2-ioctl.c | 4 +
>>>>>>>> include/media/v4l2-isp.h | 13 +
>>>>>>>> include/uapi/linux/media/nxp/nxp_neoisp.h | 1968 ++++++++++++
>>>>>>>> include/uapi/linux/media/v4l2-isp.h | 85 +
>>>>>>>> include/uapi/linux/v4l2-controls.h | 6 +
>>>>>>>> include/uapi/linux/videodev2.h | 6 +
>>>>>>>> 30 files changed, 11880 insertions(+), 3 deletions(-)
>>>>>>>> create mode 100644 Documentation/admin-guide/media/nxp-neoisp-
>>>>>>>> diagram.dot
>>>>>>>> create mode 100644 Documentation/admin-guide/media/nxp-neoisp.dot
>>>>>>>> create mode 100644 Documentation/admin-guide/media/nxp-neoisp.rst
>>>>>>>> create mode 100644 Documentation/devicetree/bindings/media/
>>>>>>>> nxp,neoisp.yaml
>>>>>>>> create mode 100644 Documentation/userspace-api/media/v4l/metafmt-
>>>>>>>> nxp-neoisp.rst
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/Kconfig
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/Makefile
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp.h
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_ctx.c
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_ctx.h
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_debugfs.c
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_fmt.h
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_hw.h
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_main.c
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_nodes.h
>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_regs.h
>>>>>>>> create mode 100644 include/uapi/linux/media/nxp/nxp_neoisp.h
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [RFC v1 00/11] Add iMX95 neoisp driver
2026-03-20 16:29 ` Antoine Bouyer
@ 2026-03-23 13:18 ` Jacopo Mondi
2026-03-24 17:44 ` Antoine Bouyer
0 siblings, 1 reply; 14+ messages in thread
From: Jacopo Mondi @ 2026-03-23 13:18 UTC (permalink / raw)
To: Antoine Bouyer
Cc: Jacopo Mondi, Michael Riesch, julien.vuillaumier, alexi.birlinger,
daniel.baluta, peng.fan, frank.li, laurent.pinchart, mchehab,
robh, krzk+dt, conor+dt, shawnguo, s.hauer, kernel, festevam,
linux-kernel, linux-media, devicetree, linux-arm-kernel,
niklas soderlund, Anthony McGivern
Hi Antoine
On Fri, Mar 20, 2026 at 05:29:44PM +0100, Antoine Bouyer wrote:
> Hi Jacopo
>
> Quite some updates regarding this RFC after further analysis.
>
> Le 05/02/2026 à 10:40, Jacopo Mondi a écrit :
> >
> >
> > Hi Antoine
> >
> > On Wed, Feb 04, 2026 at 07:30:18PM +0100, Antoine Bouyer wrote:
> > > Hi Jacopo
> > >
> > > Le 04/02/2026 à 18:12, Jacopo Mondi a écrit :
> > > >
> > > > Hello,
> > > >
> > > > On Tue, Feb 03, 2026 at 07:37:34PM +0100, Jacopo Mondi wrote:
> > > > > Hello
> > > > >
> > > > > On Thu, Jan 29, 2026 at 12:00:24AM +0100, Michael Riesch wrote:
> > > > > > Hi Antoine,
> > > > > >
> > > > > > Thanks for your response.
> > > > > >
> > > > > > On 1/28/26 09:17, Antoine Bouyer wrote:
> > > > > > > Hi Michael
> > > > > > >
> > > > > > > On 1/26/26 10:44 AM, Michael Riesch wrote:
> > > > > > > >
> > > > > > > >
> > > > > > > > Hi Antoine,
> > > > > > > >
> > > > > > > > On 1/23/26 09:09, Antoine Bouyer wrote:
> > > > > > > > > Hi all,
> > > > > > > > >
> > > > > > > > > This RFC patch series introduces the NXP Neo Image Signal Processor
> > > > > > > > > (ISP)
> > > > > > > > > driver, used in the NXP i.MX95 SoC and future devices in the i.MX9
> > > > > > > > > family.
> > > > > > > > > The series also includes updates to the generic v4l2-isp interface to
> > > > > > > > > support extended statistics required by the Neo ISP.
> > > > > > > > >
> > > > > > > > > The Neo ISP processes one or more camera streams, converting RAW formats
> > > > > > > > > into YUV or RGB outputs. Its architecture is largely influenced by the
> > > > > > > > > PISP driver. The hardware supports up to eight contexts, with three sink
> > > > > > > > > pads (main input, HDR input, and parameter buffers) and three source
> > > > > > > > > pads
> > > > > > > > > (RGB output, IR output, and statistics metadata).
> > > > > > > > >
> > > > > > > > > At this stage, both legacy (fixed-size) and extensible (dynamic-size)
> > > > > > > > > parameter/statistics buffers are supported through the generic v4l2-isp
> > > > > > > > > framework, similar to rkisp1 and Mali-C55. The driver currently supports
> > > > > > > > > M2M operation; direct CSI-to-ISP streaming is not yet implemented.
> > > > > > > >
> > > > > > > > How do you envisage the direct CSI-to-ISP streaming shall be supported?
> > > > > > >
> > > > > > > At this stage, this streaming mode still needs to be evaluated on
> > > > > > > neoisp. We should follow the integration model used by existing ISP
> > > > > > > drivers to avoid duplicating solutions.
> > > > > >
> > > > > > Fair point, but I have had the impression that there are not many
> > > > > > examples (if any). The rkisp1 driver, for instance, only supports inline
> > > > > > mode although the HW should be able to do both.
> > > > > >
> > > > > > But any pointers most welcome, I won't claim I have the full overview.
> > > > > >
> > > > > > >
> > > > > > > Below are my initial thoughts on the specific points you raised:
> > > > > > >
> > > > > > > > - How shall the final media graph(s) look like?
> > > > > > >
> > > > > > > The media entities would remain mostly identical, except for the absence
> > > > > > > of ISI. The topology would be a direct linkg from sensor->csi-
> > > > > > > > formatter->neoisp.
> > > > >
> > > > > If support for inline mode has to be added later, the ISP will need to
> > > > > be registered in the same media graph of the CSI-2 receiver to be able
> > > > > to link the two, right ?
> > >
> > > yes correct.
> > >
> > > > >
> > > > > How do you envision to control the ISP operating mode, because I'm
> > > > > afraid if you register the ISP in its own media graph, you're locking
> > > > > yourself there as implementing inline mode would require a different
> > > > > media topology with all the implications on the rest of the userspace
> > > > > stack.
> > > > >
> > > > > This might not be a problem if you know that the inline vs m2m mode is
> > > > > SoC sythesis time parameter. Some SoCs will integrate neoisp inline, some
> > > > > other as m2m. In this case you'll likely need two pipeline handlers
> > > > > in libcamera, but if that's per SoC-line maybe is acceptable. The fact
> > > > > you suggests in inline mode there won't be an ISI makes me think this
> > > > > actually depends on the SoC design ?
> > >
> > > Actually, this is not really at SoC synthesis time, neoisp HW does support
> > > both modes, that is configurable. But ISP HW can run in a single mode only
> >
> > > once it is configured. Streaming mode is tightly coupled with CSI HW, then
> > > ISP cannot be used in M2M mode with another sensor simultaneously.
> > >
> >
> > Yes, my point is trying to understand "how it is configured" and what
> > your expectations are.
> >
> > Will the board .dts (or a camera .dtso) decide how the ISP is operated
> > by defining its endpoint connections ? Assuming with the same SoC both
> > inline and m2m modes are possible, without differences in the SoC
> > design/integration, will users of the same board have to modify the
> > .dts or load ad-hoc .dtso to decide what mode is in use ?
> >
> > Then, the question of how the media topology will look and which
> > components registers what has to be clarified.
> >
> > Let's try to make a taxonomy of the cases we have in mainline (or on
> > their way to mainline).
> >
> > In the mali example I mentioned, the operating mode is selected by the
> > .dtsi as Mali can be integrated either inline or in m2m mode in
> > different SoCs. RZ/V2H in example, will always be m2m as it doesn't
> > interface the CSI-2 receiver with the ISP but rather interfaces the
> > ISP with a companion chip the performs memory access on its behalf
> > (the IVC). A different design that incorporates Mali inline will
> > instead have to interface the CSI-2 receiver with the ISP with
> > internal busses/glue logic and will then have to described this in dts.
> >
> > This is fine as the ISP integration is different and then having the
> > description in dts is legit.
> >
> > The ISP driver unconditionally registers an async notifier and the
> > downstream component (csi-2 or IVC) will register its async subdev(s)
> > which will all appear in the ISP media graph. This is possible because
> > the assumption is that the CSI-2 receiver (or the companion chip)
> > won't register their own media graph.
> >
> > The Renesas V4H example I mentioned is instead different. The ISP can
> > be operated in inline and m2m, on the same SoC without any
> > modification to hardware and to the dts/dtsi. It's basically a user
> > choice we defer to runtime.
> >
> > The V4H already has a component that registers a media graph: the
> > CSI-2/VIN block which is found in many SoCs of the same (and older)
> > generations. The ISP is present only in some SoC, but the CSI-2/VIN is
> > always there. In this case, to support both inline and m2m modes, the
> > VIN registers the media device and, with the trick I pointed you to in
> > Niklas' code, the ISP registers a subdev in the VIN media graph. Then
> > the inline/m2m mode can be selected by media link enablement at
> > run-time. Now, inline mode is not yet supported on V4H and there might
> > be dragons there, but at least, both modes should be possible on the same
> > SoC.
> >
> > On the other extremes we have the RaspberryPi PiSP BE and RkISP1.
> >
> > RPi knows the only SoC where the PiPS will be found is their one. The
> > ISP cannot function inline and will always be m2m. In this case, a
> > dedicated media graph for the ISP is the simplest and cleanest
> > solution.
> >
> > RkISP1 instead will always be inline only. It registers a media device
> > and an async notifier, the connected CSI-2 receiver will register an
> > async subdev and will be connected to the device tree endpoint of the
> > ISP device node.
> >
> > What model is the closest one to the neoisp integration that you
> > envision on NXP SoCs ?
>
> Then the closest model is the V4H one I believe: we both support m2m and
> streaming (inline) modes on the same SoC. I tested the trick you pointed
> out, and let the formatter sharing the media device (owned by ISI) to the
> neo ISP, like renesas csisp does. It registers as expected, thanks for the
> proposal !
>
> I think formatter is a good candidate since it is physically connected to
> ISP through a pixel link for streaming mode. Moreover, I propose to create a
> dedicated pad b/w formatter and ISP and keep the one b/w formatter and ISI
> as it is, so that in future we can configure the stream format which is sent
> to ISP, and the one sent to ISI.
So, if I look at the ISI media graph you shared earlier in the thread,
the formatter will gain one source pad to be optionally connected to
the ISP, while the existing one that connectes to the crossbar will
stay as it is today ?
>
> I also tested the streaming path can be added in device tree with endpoint
> connections between the nodes, so that ISP can create the media link when it
> registers itself to the media device.
I think this is fine if there actually is a data path between the
formatter and the ISP as you have suggested.
>
> Thus at runtime, if userspace enables this link, then neo runs in streaming
> mode, otherwise m2m is used.
So if we have an ISI, the ISP can be operated in m2m or inline based
on run-time link enablement, right ?
>
> If another SoC in future doesn't support streaming path, the endpoints can
> be removed from device tree, the ISP would stay in media graph anyway with
> m2m mode only.
Nice!
Do you envision a streaming mode only design, where there is no ISI
and the ISP has to register the media device itself ?
>
> Do you think this is good approach ?
>
Certainly so! Thanks for the effort!
> >
> > > >
> > > > One small correction after some more research:
> > > >
> > > > we actually already have a pipeline in libcamera that supports inline
> > > > and (will soon) support m2m: the mali c55 one. My take on "probably
> > > > need two pipeline handlers" was not correct then.
> > >
> > > Yes, I saw your patchwork on libcamera about this coming upgrade. Spent some
> > > time analyzing it ':) Seems we are quite aligned as per my understanding:
> > > inline mode (i.e. streaming mode with neoisp) _or_ M2M mode using IVC video
> > > device from Mali. Is that right ?
> > >
> > > >
> > > > As said, Mali-C55 can be integrated inline or in m2m mode and this is
> > > > decided based on the device tree endpoint connections.
> > >
> > > Good. Do you have an example available ?
> >
> > It's in mainline, but there's nothing exciting there as the assumption
> > is that there will always be a connection on the first endpoint and
> > the driver simply registers a notifier for the connected async subdev. If
> > it's a CSI-2 receiver then we're inline. If it's a companion chip
> > we're m2m.
> >
> > The libcamera pipeline (not upstream yet) inspects the media entity
> > function of the entity connected to the ISP sink pad#0. If it's a
> > CSI-2 reciver we're inline. If it's not, we're m2m. Based on that it
> > operated the pipeline differently.
> >
> > >
> > > >
> > > > So, if you know neoisp will be integrated either inline or m2m in
> > > > different SoC lines, maybe deferring it to device tree is good enough
> > > > at the expense of a slightly more complicated pipeline ?
> > >
> > > As said, SoC/ISP HW does support both modes. But I think that the selection
> > > can be done in device tree too. So that after bootup, a camera will be used
> > > only in 1 mode.
> > >
> > > >
> > > > I guess this has implications on the bindings definition as well..
> > >
> > > Most probably yes. Can this be done as second phase once evaluation is
> > > completed ?
> > >
> >
> > I think you should asses from the very beginning what is the planned
> > integration model of the ISP in order not to corner yourself in a
> > place where it will be hard to support inline without re-writing
> > the driver's media device registration logic.
> >
> > Looking at the below media graph of CSI/ISI you should ask the question "how
> > will I register the ISP subdev in the CSI-2 media graph when inline"
> > and "how will I describe inline vs m2m mode if the underlying hardware
> > design doesn't change?" as deferring it to the .dts might not be the
> > most correct way to go in that case ?
>
> So I think we are aligned now: one media graph from the beginning for
> supporting both modes, even if first mainline version only supports m2m.
> Would that be ok ?
>
Yes!
Let's only just clarify if there will ever be a mode where there is no
ISI as in that case I think we need to clarify who will register the
media graph and the async notifiers..
> >
> > > >
> > > > >
> > > > > However, if you plan to allow deferring inline/m2m mode selection to
> > > > > the system integrators or even have it as a run-time parameter, then
> > > > > you should really consider having the ISP in the same media graph as
> > > > > the CSI-2 receiver and operate the whole CSI-2/ISI/ISP as a single
> > > > > media graph, where you could select the operating mode through media link
> > > > > enablement or dts endpoint connections
> > > > >
> > > > > Niklas (in cc) has addressed a similar situation, where inline and m2m
> > > > > mode can be selected by link enablement at runtime here
> > > > > https://patchwork.linuxtv.org/project/linux-media/patch/20251225171054.1370856-3-niklas.soderlund+renesas@ragnatech.se/
> > > > > (see risp_cs_internal_ops)
> > > > >
> > > > > >
> > > > > > OK, I thought that ISI was still around...
> > > > > >
> > > > > > >
> > > > > > > > - How many media devices are registered and which driver registers it
> > > > > > > > or them?
> > > > > > >
> > > > > > > That will be part of the evaluation. My initial assumption is that
> > > > > > > neoisp would be the appropriate component to register the media device
> > > > > > > in this mode, since ISI is not involved, and ISI currently performs the
> > > > > > > registration in the M2M configuration.
> > > > >
> > > > > Isn't the ISP registering its own media graph ?
> > >
> > > Yes, 8 copies of ISP media graph, that can be used with the 8 output video
> > > devices of the ISI media graph.
> > >
> >
> > I suggest you do what RPi does. The mainline driver only registers one
> > instance and they carry a little patch downstream that implements the
> > for() loop where multiple instances are registered. Duplicating media graphs
> > is not desirable (at least in mainline) as we can have ISPs with 256
> > contexts, we don't want 256 media graphs.
>
> Ok. Will do same approach then: 1 neoisp instance on mainline + downstream
> patch to create other instances (x8), all in same media graph.
Thank you. Let's work on a proper solution and then the downstream
patch will be dropped!
>
> >
> > A framework level solution with proper priority handling and job
> > scheduling is what is required and that's what the context work should
> > end up being.>
> >
> > > > >
> > > > > Can we get a copy of all media graphs on an i.MX95 system including
> > > > > the ISI and the CSI-2 receiver ?
> > >
> > > Here is an example with multiple sensors. Or do you need it in another
> > > format ?
> >
> > No it's fine, thanks!
> >
> > >
> > >
> > > digraph board {
> > > rankdir=TB
> > > n00000001 [label="{{<port0> 0 | <port1> 1 | <port2> 2 | <port3> 3 |
> > > <port4> 4} | crossbar\n/dev/v4l-subdev8 | {<port5> 5 | <port6> 6 | <port7> 7
> > > | <port8> 8 | <port9> 9 | <port10> 10 | <port11> 11 | <port12> 12}}",
> > > shape=Mrecord, style=filled, fillcolor=green]
> > > n00000001:port5 -> n0000000f:port0 [style=bold]
> > > n00000001:port6 -> n0000001a:port0 [style=bold]
> > > n00000001:port7 -> n00000025:port0 [style=bold]
> > > n00000001:port8 -> n00000030:port0 [style=bold]
> > > n00000001:port9 -> n0000003b:port0 [style=bold]
> > > n00000001:port10 -> n00000046:port0 [style=bold]
> > > n00000001:port11 -> n00000051:port0 [style=bold]
> > > n00000001:port12 -> n0000005c:port0 [style=bold]
> > > n0000000f [label="{{<port0> 0} | mxc_isi.0\n/dev/v4l-subdev9 |
> > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n0000000f:port1 -> n00000012 [style=bold]
> > > n00000012 [label="mxc_isi.0.capture\n/dev/video8", shape=box,
> > > style=filled, fillcolor=yellow]
> > > n0000001a [label="{{<port0> 0} | mxc_isi.1\n/dev/v4l-subdev10 |
> > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n0000001a:port1 -> n0000001d [style=bold]
> > > n0000001d [label="mxc_isi.1.capture\n/dev/video9", shape=box,
> > > style=filled, fillcolor=yellow]
> > > n00000025 [label="{{<port0> 0} | mxc_isi.2\n/dev/v4l-subdev11 |
> > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n00000025:port1 -> n00000028 [style=bold]
> > > n00000028 [label="mxc_isi.2.capture\n/dev/video10", shape=box,
> > > style=filled, fillcolor=yellow]
> > > n00000030 [label="{{<port0> 0} | mxc_isi.3\n/dev/v4l-subdev12 |
> > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n00000030:port1 -> n00000033 [style=bold]
> > > n00000033 [label="mxc_isi.3.capture\n/dev/video13", shape=box,
> > > style=filled, fillcolor=yellow]
> > > n0000003b [label="{{<port0> 0} | mxc_isi.4\n/dev/v4l-subdev13 |
> > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n0000003b:port1 -> n0000003e [style=bold]
> > > n0000003e [label="mxc_isi.4.capture\n/dev/video14", shape=box,
> > > style=filled, fillcolor=yellow]
> > > n00000046 [label="{{<port0> 0} | mxc_isi.5\n/dev/v4l-subdev14 |
> > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n00000046:port1 -> n00000049 [style=bold]
> > > n00000049 [label="mxc_isi.5.capture\n/dev/video21", shape=box,
> > > style=filled, fillcolor=yellow]
> > > n00000051 [label="{{<port0> 0} | mxc_isi.6\n/dev/v4l-subdev15 |
> > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n00000051:port1 -> n00000054 [style=bold]
> > > n00000054 [label="mxc_isi.6.capture\n/dev/video22", shape=box,
> > > style=filled, fillcolor=yellow]
> > > n0000005c [label="{{<port0> 0} | mxc_isi.7\n/dev/v4l-subdev16 |
> > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n0000005c:port1 -> n0000005f [style=bold]
> > > n0000005f [label="mxc_isi.7.capture\n/dev/video23", shape=box,
> > > style=filled, fillcolor=yellow]
> > > n00000067 [label="mxc_isi.output\n", shape=box, style=filled,
> > > fillcolor=yellow]
> > > n00000067 -> n00000001:port4 [style=bold]
> > > n0000006e [label="{{<port0> 0} |
> > > 4ac10000.syscon:formatter@20\n/dev/v4l-subdev17 | {<port1> 1}}",
> > > shape=Mrecord, style=filled, fillcolor=green]
> > > n0000006e:port1 -> n00000001:port2 [style=bold]
> > > n00000073 [label="{{<port0> 0} |
> > > csidev-4ad30000.csi\n/dev/v4l-subdev18 | {<port1> 1}}", shape=Mrecord,
> > > style=filled, fillcolor=green]
> > > n00000073:port1 -> n0000006e:port0 [style=bold]
> > > n00000078 [label="{{<port0> 0 | <port1> 1 | <port2> 2 | <port3> 3} |
> > > max96724 2-0027\n/dev/v4l-subdev19 | {<port4> 4 | <port5> 5}}",
> > > shape=Mrecord, style=filled, fillcolor=green]
> > > n00000078:port4 -> n00000073:port0 [style=dashed]
> > > n00000081 [label="{{} | mx95mbcam 8-0040\n/dev/v4l-subdev20 |
> > > {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n00000081:port0 -> n00000078:port0 [style=bold]
> > > n00000085 [label="{{} | mx95mbcam 9-0040\n/dev/v4l-subdev21 |
> > > {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n00000085:port0 -> n00000078:port1 [style=bold]
> > > n00000089 [label="{{} | mx95mbcam 10-0040\n/dev/v4l-subdev22 |
> > > {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n00000089:port0 -> n00000078:port2 [style=bold]
> > > n0000008d [label="{{} | mx95mbcam 11-0040\n/dev/v4l-subdev23 |
> > > {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
> > > n0000008d:port0 -> n00000078:port3 [style=bold]
> > > }
> > >
> > >
> > > > >
> > > > > If I'm not mistaken you'll have 8 copies of the ISP media graphs, and
> > > > > that's exactly what we're working on with the context framework :)
> > > > >
> > >
> > > Ok. Then I should have a look to context framework too ...
> > >
> >
> > Please, I hope to be able to resume working on it sooner or later
> > given the right use case.
>
> Ok. Will continue monitoring the multi context work. Seems to be a nice
> feature indeed. But as impact on userspace is more significant, that can be
> done as a second step I guess, and will keep the multi instance downstream
> patch meanwhile.
>
> >
> > > > >
> > > > > >
> > > > > > ... since it is not, your assumption seems very reasonable.
> > > > > >
> > > > > > >
> > > > > > > > - How can the user decide whether direct (csi2isp) or indirect
> > > > > > > > (mem2mem) streaming shall be used?
> > > > > > >
> > > > > > > That will also be part of the evaluation. From dts would be my first
> > > > > > > option, but may prevent using both modes on same platform then.
> > > > > >
> > > > > > Of course this depends what the hardware is able to do, but in case the
> > > > > > HW is reconfigurable easily, I doubt that device tree is a good choice
> > > > > > to solve that.
> > > > > > >
> > > > > > > >
> > > > > > > > While it is certainly OK to introduce this support only at a later
> > > > > > > > stage, it makes sense to consider this right from the start to avoid
> > > > > > > > some nasty changes e.g. in how this hardware is exposed to user space.
> > > > > > > >
> > > > > > > > Also, we are facing a similiar challenge with recent Rockchip ISP
> > > > > > > > hardware (RK3588, RK3576, ...) and it would be great to hear your
> > > > > > > > thoughts about that.
> > > > > > >
> > > > > > > Is there an existing discussion thread available on this topic? I would
> > > > > > > be very interested in following it.
> > > > > >
> > > > > > Not yet, I am afraid. But there should be one or two soon (TM) :-)
> > > > >
> > > > > It's probably time to have one :)
> > >
> > > Good. Please loop me in ;)
> >
> > You are in, this is the conversation ;)
> >
> > It might be a good discussion point for the media summit in Nice
> > co-located with Embedded Recipes if people with interest in the topic
> > will going the be there.
>
> Great ! Will try to join then.
>
I'm not sure yet how many interested parties will be in Nice and if it
would make sense to organize an "ISP design day" there or should we
plan a devroom for Plumbers in Prague ?
> BR
> Antoine
>
> >
> > I'm also adding Anthony from ARM as I know he's going through the same
> > inline/m2m duality you're now facing.
> >
> > Thanks
> > j
> >
> > >
> > > BR
> > > Antoine
> > >
> > > > >
> > > > > >
> > > > > > Thanks and regards,
> > > > > > Michael
> > > > > >
> > > > > > >
> > > > > > > Thanks
> > > > > > > Antoine
> > > > > > >
> > > > > > > >
> > > > > > > > Thanks in advance and best regards,
> > > > > > > > Michael
> > > > > > > >
> > > > > > > > >
> > > > > > > > > This series is posted as RFC because extending the v4l2-isp interface
> > > > > > > > > may
> > > > > > > > > overlap with ongoing work. If similar development already exists, I am
> > > > > > > > > happy to rebase or adapt the series accordingly. If preferred, the
> > > > > > > > > series
> > > > > > > > > can also be split into two parts: the v4l2-isp rework and the Neo ISP
> > > > > > > > > driver introduction.
> > > > > > > > >
> > > > > > > > > A few checkpatch warnings in v4l2-ioctl.c remain intentionally to stay
> > > > > > > > > consistent with the existing style in that file.
> > > > > > > > >
> > > > > > > > > Testing was performed on the i.MX95 EVK using the media/next kernel in
> > > > > > > > > standalone M2M mode. End-to-end camera-to-ISP capture has been validated
> > > > > > > > > using the downstream NXP kernel, as some hardware dependencies are not
> > > > > > > > > yet upstreamed.
> > > > > > > > >
> > > > > > > > > Thanks,
> > > > > > > > > Antoine
> > > > > > > > >
> > > > > > > > > ---
> > > > > > > > > Here are v4l2-compliance test results:
> > > > > > > > >
> > > > > > > > > v4l2-compliance 1.28.1-5233, 64 bits, 64-bit time_t
> > > > > > > > > v4l2-compliance SHA: fc15e229d9d3 2024-07-23 19:22:15
> > > > > > > > >
> > > > > > > > > Compliance test for neoisp device /dev/media0:
> > > > > > > > >
> > > > > > > > > Media Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Model : neoisp
> > > > > > > > > Serial :
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Media version : 6.19.0
> > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > Driver version : 6.19.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:
> > > > > > > > > test MEDIA_IOC_G_TOPOLOGY: OK
> > > > > > > > > Entities: 7 Interfaces: 7 Pads: 12 Links: 13
> > > > > > > > > test MEDIA_IOC_ENUM_ENTITIES/LINKS: OK
> > > > > > > > > test MEDIA_IOC_SETUP_LINK: OK
> > > > > > > > >
> > > > > > > > > Total for neoisp device /dev/media0: 8, Succeeded: 8, Failed: 0,
> > > > > > > > > Warnings: 0
> > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > Compliance test for neoisp device /dev/video0:
> > > > > > > > >
> > > > > > > > > Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Card type : neoisp
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > Video Capture Multiplanar
> > > > > > > > > Video Output Multiplanar
> > > > > > > > > Metadata Capture
> > > > > > > > > Metadata Output
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Device Capabilities
> > > > > > > > > Device Caps : 0x04202000
> > > > > > > > > Video Output Multiplanar
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Media Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Model : neoisp
> > > > > > > > > Serial :
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Media version : 6.19.0
> > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Interface Info:
> > > > > > > > > ID : 0x0300000a
> > > > > > > > > Type : V4L Video
> > > > > > > > > Entity Info:
> > > > > > > > > ID : 0x00000008 (8)
> > > > > > > > > Name : neoisp-input0
> > > > > > > > > Function : V4L2 I/O
> > > > > > > > > Pad 0x01000009 : 0: Source
> > > > > > > > > Link 0x0200000c: to remote pad 0x1000002 of entity
> > > > > > > > > 'neoisp' (Image Signal Processor): Data, Enabled, Immutable
> > > > > > > > >
> > > > > > > > > Required ioctls:
> > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test invalid ioctls: OK
> > > > > > > > >
> > > > > > > > > Allow for multiple opens:
> > > > > > > > > test second /dev/video0 open: OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > test for unlimited opens: OK
> > > > > > > > >
> > > > > > > > > Debug ioctls:
> > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Input ioctls:
> > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > >
> > > > > > > > > Output ioctls:
> > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > >
> > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Control ioctls:
> > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > >
> > > > > > > > > Format ioctls:
> > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > test Cropping: OK
> > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > test Scaling: OK
> > > > > > > > >
> > > > > > > > > Codec ioctls:
> > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Buffer ioctls:
> > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Total for neoisp device /dev/video0: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > Warnings: 0
> > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > Compliance test for neoisp device /dev/video1:
> > > > > > > > >
> > > > > > > > > Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Card type : neoisp
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > Video Capture Multiplanar
> > > > > > > > > Video Output Multiplanar
> > > > > > > > > Metadata Capture
> > > > > > > > > Metadata Output
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Device Capabilities
> > > > > > > > > Device Caps : 0x04202000
> > > > > > > > > Video Output Multiplanar
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Media Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Model : neoisp
> > > > > > > > > Serial :
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Media version : 6.19.0
> > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Interface Info:
> > > > > > > > > ID : 0x03000010
> > > > > > > > > Type : V4L Video
> > > > > > > > > Entity Info:
> > > > > > > > > ID : 0x0000000e (14)
> > > > > > > > > Name : neoisp-input1
> > > > > > > > > Function : V4L2 I/O
> > > > > > > > > Pad 0x0100000f : 0: Source
> > > > > > > > > Link 0x02000012: to remote pad 0x1000003 of entity
> > > > > > > > > 'neoisp' (Image Signal Processor): Data
> > > > > > > > >
> > > > > > > > > Required ioctls:
> > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test invalid ioctls: OK
> > > > > > > > >
> > > > > > > > > Allow for multiple opens:
> > > > > > > > > test second /dev/video1 open: OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > test for unlimited opens: OK
> > > > > > > > >
> > > > > > > > > Debug ioctls:
> > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Input ioctls:
> > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > >
> > > > > > > > > Output ioctls:
> > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > >
> > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Control ioctls:
> > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > >
> > > > > > > > > Format ioctls:
> > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > test Cropping: OK
> > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > test Scaling: OK
> > > > > > > > >
> > > > > > > > > Codec ioctls:
> > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Buffer ioctls:
> > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Total for neoisp device /dev/video1: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > Warnings: 0
> > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > Compliance test for neoisp device /dev/video2:
> > > > > > > > >
> > > > > > > > > Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Card type : neoisp
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > Video Capture Multiplanar
> > > > > > > > > Video Output Multiplanar
> > > > > > > > > Metadata Capture
> > > > > > > > > Metadata Output
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Device Capabilities
> > > > > > > > > Device Caps : 0x0c200000
> > > > > > > > > Metadata Output
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Media Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Model : neoisp
> > > > > > > > > Serial :
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Media version : 6.19.0
> > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Interface Info:
> > > > > > > > > ID : 0x03000016
> > > > > > > > > Type : V4L Video
> > > > > > > > > Entity Info:
> > > > > > > > > ID : 0x00000014 (20)
> > > > > > > > > Name : neoisp-params
> > > > > > > > > Function : V4L2 I/O
> > > > > > > > > Pad 0x01000015 : 0: Source
> > > > > > > > > Link 0x02000018: to remote pad 0x1000004 of entity
> > > > > > > > > 'neoisp' (Image Signal Processor): Data, Enabled
> > > > > > > > >
> > > > > > > > > Required ioctls:
> > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test invalid ioctls: OK
> > > > > > > > >
> > > > > > > > > Allow for multiple opens:
> > > > > > > > > test second /dev/video2 open: OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > test for unlimited opens: OK
> > > > > > > > >
> > > > > > > > > Debug ioctls:
> > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Input ioctls:
> > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > >
> > > > > > > > > Output ioctls:
> > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > >
> > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Control ioctls:
> > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > >
> > > > > > > > > Format ioctls:
> > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > test Cropping: OK (Not Supported)
> > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > test Scaling: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Codec ioctls:
> > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Buffer ioctls:
> > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Total for neoisp device /dev/video2: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > Warnings: 0
> > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > Compliance test for neoisp device /dev/video3:
> > > > > > > > >
> > > > > > > > > Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Card type : neoisp
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > Video Capture Multiplanar
> > > > > > > > > Video Output Multiplanar
> > > > > > > > > Metadata Capture
> > > > > > > > > Metadata Output
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Device Capabilities
> > > > > > > > > Device Caps : 0x04201000
> > > > > > > > > Video Capture Multiplanar
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Media Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Model : neoisp
> > > > > > > > > Serial :
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Media version : 6.19.0
> > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Interface Info:
> > > > > > > > > ID : 0x0300001c
> > > > > > > > > Type : V4L Video
> > > > > > > > > Entity Info:
> > > > > > > > > ID : 0x0000001a (26)
> > > > > > > > > Name : neoisp-frame
> > > > > > > > > Function : V4L2 I/O
> > > > > > > > > Pad 0x0100001b : 0: Sink
> > > > > > > > > Link 0x0200001e: from remote pad 0x1000005 of entity
> > > > > > > > > 'neoisp' (Image Signal Processor): Data, Enabled
> > > > > > > > >
> > > > > > > > > Required ioctls:
> > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test invalid ioctls: OK
> > > > > > > > >
> > > > > > > > > Allow for multiple opens:
> > > > > > > > > test second /dev/video3 open: OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > test for unlimited opens: OK
> > > > > > > > >
> > > > > > > > > Debug ioctls:
> > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Input ioctls:
> > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > >
> > > > > > > > > Output ioctls:
> > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > >
> > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Control ioctls:
> > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > >
> > > > > > > > > Format ioctls:
> > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > test Cropping: OK (Not Supported)
> > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > test Scaling: OK
> > > > > > > > >
> > > > > > > > > Codec ioctls:
> > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Buffer ioctls:
> > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Total for neoisp device /dev/video3: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > Warnings: 0
> > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > Compliance test for neoisp device /dev/video4:
> > > > > > > > >
> > > > > > > > > Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Card type : neoisp
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > Video Capture Multiplanar
> > > > > > > > > Video Output Multiplanar
> > > > > > > > > Metadata Capture
> > > > > > > > > Metadata Output
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Device Capabilities
> > > > > > > > > Device Caps : 0x04201000
> > > > > > > > > Video Capture Multiplanar
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Media Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Model : neoisp
> > > > > > > > > Serial :
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Media version : 6.19.0
> > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Interface Info:
> > > > > > > > > ID : 0x03000022
> > > > > > > > > Type : V4L Video
> > > > > > > > > Entity Info:
> > > > > > > > > ID : 0x00000020 (32)
> > > > > > > > > Name : neoisp-ir
> > > > > > > > > Function : V4L2 I/O
> > > > > > > > > Pad 0x01000021 : 0: Sink
> > > > > > > > > Link 0x02000024: from remote pad 0x1000006 of entity
> > > > > > > > > 'neoisp' (Image Signal Processor): Data
> > > > > > > > >
> > > > > > > > > Required ioctls:
> > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test invalid ioctls: OK
> > > > > > > > >
> > > > > > > > > Allow for multiple opens:
> > > > > > > > > test second /dev/video4 open: OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > test for unlimited opens: OK
> > > > > > > > >
> > > > > > > > > Debug ioctls:
> > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Input ioctls:
> > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > >
> > > > > > > > > Output ioctls:
> > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > >
> > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Control ioctls:
> > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > >
> > > > > > > > > Format ioctls:
> > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > test Cropping: OK (Not Supported)
> > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > test Scaling: OK
> > > > > > > > >
> > > > > > > > > Codec ioctls:
> > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Buffer ioctls:
> > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Total for neoisp device /dev/video4: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > Warnings: 0
> > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > Compliance test for neoisp device /dev/video5:
> > > > > > > > >
> > > > > > > > > Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Card type : neoisp
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > Video Capture Multiplanar
> > > > > > > > > Video Output Multiplanar
> > > > > > > > > Metadata Capture
> > > > > > > > > Metadata Output
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Device Capabilities
> > > > > > > > > Device Caps : 0x04a00000
> > > > > > > > > Metadata Capture
> > > > > > > > > Streaming
> > > > > > > > > Extended Pix Format
> > > > > > > > > Media Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Model : neoisp
> > > > > > > > > Serial :
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Media version : 6.19.0
> > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Interface Info:
> > > > > > > > > ID : 0x03000028
> > > > > > > > > Type : V4L Video
> > > > > > > > > Entity Info:
> > > > > > > > > ID : 0x00000026 (38)
> > > > > > > > > Name : neoisp-stats
> > > > > > > > > Function : V4L2 I/O
> > > > > > > > > Pad 0x01000027 : 0: Sink
> > > > > > > > > Link 0x0200002a: from remote pad 0x1000007 of entity
> > > > > > > > > 'neoisp' (Image Signal Processor): Data, Enabled
> > > > > > > > >
> > > > > > > > > Required ioctls:
> > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test invalid ioctls: OK
> > > > > > > > >
> > > > > > > > > Allow for multiple opens:
> > > > > > > > > test second /dev/video5 open: OK
> > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > test for unlimited opens: OK
> > > > > > > > >
> > > > > > > > > Debug ioctls:
> > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Input ioctls:
> > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > >
> > > > > > > > > Output ioctls:
> > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > >
> > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Control ioctls:
> > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > >
> > > > > > > > > Format ioctls:
> > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > test Cropping: OK (Not Supported)
> > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > test Scaling: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Codec ioctls:
> > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Buffer ioctls:
> > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Total for neoisp device /dev/video5: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > Warnings: 0
> > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > Compliance test for neoisp device /dev/v4l-subdev0:
> > > > > > > > >
> > > > > > > > > Driver Info:
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Capabilities : 0x00000000
> > > > > > > > > Client Capabilities: 0x0000000000000002
> > > > > > > > > interval-uses-which Media Driver Info:
> > > > > > > > > Driver name : neoisp
> > > > > > > > > Model : neoisp
> > > > > > > > > Serial :
> > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > Media version : 6.19.0
> > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > Driver version : 6.19.0
> > > > > > > > > Interface Info:
> > > > > > > > > ID : 0x0300002c
> > > > > > > > > Type : V4L Sub-Device
> > > > > > > > > Entity Info:
> > > > > > > > > ID : 0x00000001 (1)
> > > > > > > > > Name : neoisp
> > > > > > > > > Function : Image Signal Processor
> > > > > > > > > Pad 0x01000002 : 0: Sink
> > > > > > > > > Link 0x0200000c: from remote pad 0x1000009 of entity
> > > > > > > > > 'neoisp-input0' (V4L2 I/O): Data, Enabled, Immutable
> > > > > > > > > Pad 0x01000003 : 1: Sink
> > > > > > > > > Link 0x02000012: from remote pad 0x100000f of entity
> > > > > > > > > 'neoisp-input1' (V4L2 I/O): Data
> > > > > > > > > Pad 0x01000004 : 2: Sink
> > > > > > > > > Link 0x02000018: from remote pad 0x1000015 of entity
> > > > > > > > > 'neoisp-params' (V4L2 I/O): Data, Enabled
> > > > > > > > > Pad 0x01000005 : 3: Source
> > > > > > > > > Link 0x0200001e: to remote pad 0x100001b of entity 'neoisp-
> > > > > > > > > frame' (V4L2 I/O): Data, Enabled
> > > > > > > > > Pad 0x01000006 : 4: Source
> > > > > > > > > Link 0x02000024: to remote pad 0x1000021 of entity 'neoisp-
> > > > > > > > > ir' (V4L2 I/O): Data
> > > > > > > > > Pad 0x01000007 : 5: Source
> > > > > > > > > Link 0x0200002a: to remote pad 0x1000027 of entity 'neoisp-
> > > > > > > > > stats' (V4L2 I/O): Data, Enabled
> > > > > > > > >
> > > > > > > > > Required ioctls:
> > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > test VIDIOC_SUDBEV_QUERYCAP: OK
> > > > > > > > > test invalid ioctls: OK
> > > > > > > > >
> > > > > > > > > Allow for multiple opens:
> > > > > > > > > test second /dev/v4l-subdev0 open: OK
> > > > > > > > > test VIDIOC_SUBDEV_QUERYCAP: OK
> > > > > > > > > test for unlimited opens: OK
> > > > > > > > >
> > > > > > > > > Debug ioctls:
> > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Input ioctls:
> > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > >
> > > > > > > > > Output ioctls:
> > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > >
> > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Sub-Device ioctls (Sink Pad 0):
> > > > > > > > > Try Stream 0
> > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > Active Stream 0
> > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Sub-Device ioctls (Sink Pad 1):
> > > > > > > > > Try Stream 0
> > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > Active Stream 0
> > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Sub-Device ioctls (Sink Pad 2):
> > > > > > > > > Try Stream 0
> > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > Active Stream 0
> > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Sub-Device ioctls (Source Pad 3):
> > > > > > > > > Try Stream 0
> > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > Active Stream 0
> > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Sub-Device ioctls (Source Pad 4):
> > > > > > > > > Try Stream 0
> > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > Active Stream 0
> > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Sub-Device ioctls (Source Pad 5):
> > > > > > > > > Try Stream 0
> > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > Active Stream 0
> > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Control ioctls:
> > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
> > > > > > > > > test VIDIOC_QUERYCTRL: OK
> > > > > > > > > test VIDIOC_G/S_CTRL: OK
> > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK
> > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
> > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > Standard Controls: 1 Private Controls: 1
> > > > > > > > >
> > > > > > > > > Format ioctls:
> > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not
> > > > > > > > > Supported)
> > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_FMT: OK (Not Supported)
> > > > > > > > > test VIDIOC_TRY_FMT: OK (Not Supported)
> > > > > > > > > test VIDIOC_S_FMT: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > test Cropping: OK (Not Supported)
> > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > test Scaling: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Codec ioctls:
> > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Buffer ioctls:
> > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK (Not Supported)
> > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > test VIDIOC_EXPBUF: OK (Not Supported)
> > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > >
> > > > > > > > > Total for neoisp device /dev/v4l-subdev0: 88, Succeeded: 88, Failed:
> > > > > > > > > 0, Warnings: 0
> > > > > > > > >
> > > > > > > > > Grand Total for neoisp device /dev/media0: 384, Succeeded: 384,
> > > > > > > > > Failed: 0, Warnings: 0
> > > > > > > > >
> > > > > > > > > ---
> > > > > > > > > Antoine Bouyer (11):
> > > > > > > > > media: uapi: v4l2-isp: Add v4l2 ISP extensible statistics definitions
> > > > > > > > > media: v4l2-isp: Add helper function to compute extended stats size
> > > > > > > > > media: Documentation: uapi: Update V4L2 ISP for extensible stats
> > > > > > > > > media: Documentation: Add NXP neoisp driver documentation
> > > > > > > > > dt-bindings: media: Add nxp neoisp support
> > > > > > > > > media: v4l2-ctrls: Add user control base for NXP neoisp controls
> > > > > > > > > media: Add meta formats supported by NXP neoisp driver
> > > > > > > > > media: uapi: Add NXP NEOISP user interface header file
> > > > > > > > > media: platform: Add NXP Neoisp Image Signal Processor
> > > > > > > > > media: platform: neoisp: Add debugfs support
> > > > > > > > > arm64: dts: freescale: imx95: Add NXP neoisp device tree node
> > > > > > > > >
> > > > > > > > > .../admin-guide/media/nxp-neoisp-diagram.dot | 22 +
> > > > > > > > > .../admin-guide/media/nxp-neoisp.dot | 16 +
> > > > > > > > > .../admin-guide/media/nxp-neoisp.rst | 189 ++
> > > > > > > > > .../admin-guide/media/v4l-drivers.rst | 1 +
> > > > > > > > > .../devicetree/bindings/media/nxp,neoisp.yaml | 65 +
> > > > > > > > > .../userspace-api/media/v4l/meta-formats.rst | 1 +
> > > > > > > > > .../media/v4l/metafmt-nxp-neoisp.rst | 114 +
> > > > > > > > > .../userspace-api/media/v4l/v4l2-isp.rst | 42 +-
> > > > > > > > > MAINTAINERS | 9 +
> > > > > > > > > .../boot/dts/freescale/imx95-19x19-evk.dts | 4 +
> > > > > > > > > arch/arm64/boot/dts/freescale/imx95.dtsi | 11 +
> > > > > > > > > drivers/media/platform/nxp/Kconfig | 1 +
> > > > > > > > > drivers/media/platform/nxp/Makefile | 1 +
> > > > > > > > > drivers/media/platform/nxp/neoisp/Kconfig | 15 +
> > > > > > > > > drivers/media/platform/nxp/neoisp/Makefile | 8 +
> > > > > > > > > drivers/media/platform/nxp/neoisp/neoisp.h | 270 ++
> > > > > > > > > .../media/platform/nxp/neoisp/neoisp_ctx.c | 2798 +++++++++++++++++
> > > > > > > > > .../media/platform/nxp/neoisp/neoisp_ctx.h | 85 +
> > > > > > > > > .../platform/nxp/neoisp/neoisp_debugfs.c | 503 +++
> > > > > > > > > .../media/platform/nxp/neoisp/neoisp_fmt.h | 509 +++
> > > > > > > > > drivers/media/platform/nxp/neoisp/neoisp_hw.h | 577 ++++
> > > > > > > > > .../media/platform/nxp/neoisp/neoisp_main.c | 1999 ++++++++++++
> > > > > > > > > .../media/platform/nxp/neoisp/neoisp_nodes.h | 60 +
> > > > > > > > > .../media/platform/nxp/neoisp/neoisp_regs.h | 2501 +++++++++++++++
> > > > > > > > > drivers/media/v4l2-core/v4l2-ioctl.c | 4 +
> > > > > > > > > include/media/v4l2-isp.h | 13 +
> > > > > > > > > include/uapi/linux/media/nxp/nxp_neoisp.h | 1968 ++++++++++++
> > > > > > > > > include/uapi/linux/media/v4l2-isp.h | 85 +
> > > > > > > > > include/uapi/linux/v4l2-controls.h | 6 +
> > > > > > > > > include/uapi/linux/videodev2.h | 6 +
> > > > > > > > > 30 files changed, 11880 insertions(+), 3 deletions(-)
> > > > > > > > > create mode 100644 Documentation/admin-guide/media/nxp-neoisp-
> > > > > > > > > diagram.dot
> > > > > > > > > create mode 100644 Documentation/admin-guide/media/nxp-neoisp.dot
> > > > > > > > > create mode 100644 Documentation/admin-guide/media/nxp-neoisp.rst
> > > > > > > > > create mode 100644 Documentation/devicetree/bindings/media/
> > > > > > > > > nxp,neoisp.yaml
> > > > > > > > > create mode 100644 Documentation/userspace-api/media/v4l/metafmt-
> > > > > > > > > nxp-neoisp.rst
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/Kconfig
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/Makefile
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp.h
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_ctx.c
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_ctx.h
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_debugfs.c
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_fmt.h
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_hw.h
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_main.c
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_nodes.h
> > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_regs.h
> > > > > > > > > create mode 100644 include/uapi/linux/media/nxp/nxp_neoisp.h
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > >
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [RFC v1 00/11] Add iMX95 neoisp driver
2026-03-23 13:18 ` Jacopo Mondi
@ 2026-03-24 17:44 ` Antoine Bouyer
2026-03-25 13:23 ` Jacopo Mondi
0 siblings, 1 reply; 14+ messages in thread
From: Antoine Bouyer @ 2026-03-24 17:44 UTC (permalink / raw)
To: Jacopo Mondi
Cc: Michael Riesch, julien.vuillaumier, alexi.birlinger,
daniel.baluta, peng.fan, frank.li, laurent.pinchart, mchehab,
robh, krzk+dt, conor+dt, shawnguo, s.hauer, kernel, festevam,
linux-kernel, linux-media, devicetree, linux-arm-kernel,
niklas soderlund, Anthony McGivern
Hi Jacopo
On 3/23/26 2:18 PM, Jacopo Mondi wrote:
>
>
> Hi Antoine
>
> On Fri, Mar 20, 2026 at 05:29:44PM +0100, Antoine Bouyer wrote:
>> Hi Jacopo
>>
>> Quite some updates regarding this RFC after further analysis.
>>
>> Le 05/02/2026 à 10:40, Jacopo Mondi a écrit :
>>>
>>>
>>> Hi Antoine
>>>
>>> On Wed, Feb 04, 2026 at 07:30:18PM +0100, Antoine Bouyer wrote:
>>>> Hi Jacopo
>>>>
>>>> Le 04/02/2026 à 18:12, Jacopo Mondi a écrit :
>>>>>
>>>>> Hello,
>>>>>
>>>>> On Tue, Feb 03, 2026 at 07:37:34PM +0100, Jacopo Mondi wrote:
>>>>>> Hello
>>>>>>
>>>>>> On Thu, Jan 29, 2026 at 12:00:24AM +0100, Michael Riesch wrote:
>>>>>>> Hi Antoine,
>>>>>>>
>>>>>>> Thanks for your response.
>>>>>>>
>>>>>>> On 1/28/26 09:17, Antoine Bouyer wrote:
>>>>>>>> Hi Michael
>>>>>>>>
>>>>>>>> On 1/26/26 10:44 AM, Michael Riesch wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Hi Antoine,
>>>>>>>>>
>>>>>>>>> On 1/23/26 09:09, Antoine Bouyer wrote:
>>>>>>>>>> Hi all,
>>>>>>>>>>
>>>>>>>>>> This RFC patch series introduces the NXP Neo Image Signal Processor
>>>>>>>>>> (ISP)
>>>>>>>>>> driver, used in the NXP i.MX95 SoC and future devices in the i.MX9
>>>>>>>>>> family.
>>>>>>>>>> The series also includes updates to the generic v4l2-isp interface to
>>>>>>>>>> support extended statistics required by the Neo ISP.
>>>>>>>>>>
>>>>>>>>>> The Neo ISP processes one or more camera streams, converting RAW formats
>>>>>>>>>> into YUV or RGB outputs. Its architecture is largely influenced by the
>>>>>>>>>> PISP driver. The hardware supports up to eight contexts, with three sink
>>>>>>>>>> pads (main input, HDR input, and parameter buffers) and three source
>>>>>>>>>> pads
>>>>>>>>>> (RGB output, IR output, and statistics metadata).
>>>>>>>>>>
>>>>>>>>>> At this stage, both legacy (fixed-size) and extensible (dynamic-size)
>>>>>>>>>> parameter/statistics buffers are supported through the generic v4l2-isp
>>>>>>>>>> framework, similar to rkisp1 and Mali-C55. The driver currently supports
>>>>>>>>>> M2M operation; direct CSI-to-ISP streaming is not yet implemented.
>>>>>>>>>
>>>>>>>>> How do you envisage the direct CSI-to-ISP streaming shall be supported?
>>>>>>>>
>>>>>>>> At this stage, this streaming mode still needs to be evaluated on
>>>>>>>> neoisp. We should follow the integration model used by existing ISP
>>>>>>>> drivers to avoid duplicating solutions.
>>>>>>>
>>>>>>> Fair point, but I have had the impression that there are not many
>>>>>>> examples (if any). The rkisp1 driver, for instance, only supports inline
>>>>>>> mode although the HW should be able to do both.
>>>>>>>
>>>>>>> But any pointers most welcome, I won't claim I have the full overview.
>>>>>>>
>>>>>>>>
>>>>>>>> Below are my initial thoughts on the specific points you raised:
>>>>>>>>
>>>>>>>>> - How shall the final media graph(s) look like?
>>>>>>>>
>>>>>>>> The media entities would remain mostly identical, except for the absence
>>>>>>>> of ISI. The topology would be a direct linkg from sensor->csi-
>>>>>>>>> formatter->neoisp.
>>>>>>
>>>>>> If support for inline mode has to be added later, the ISP will need to
>>>>>> be registered in the same media graph of the CSI-2 receiver to be able
>>>>>> to link the two, right ?
>>>>
>>>> yes correct.
>>>>
>>>>>>
>>>>>> How do you envision to control the ISP operating mode, because I'm
>>>>>> afraid if you register the ISP in its own media graph, you're locking
>>>>>> yourself there as implementing inline mode would require a different
>>>>>> media topology with all the implications on the rest of the userspace
>>>>>> stack.
>>>>>>
>>>>>> This might not be a problem if you know that the inline vs m2m mode is
>>>>>> SoC sythesis time parameter. Some SoCs will integrate neoisp inline, some
>>>>>> other as m2m. In this case you'll likely need two pipeline handlers
>>>>>> in libcamera, but if that's per SoC-line maybe is acceptable. The fact
>>>>>> you suggests in inline mode there won't be an ISI makes me think this
>>>>>> actually depends on the SoC design ?
>>>>
>>>> Actually, this is not really at SoC synthesis time, neoisp HW does support
>>>> both modes, that is configurable. But ISP HW can run in a single mode only
>>>
>>>> once it is configured. Streaming mode is tightly coupled with CSI HW, then
>>>> ISP cannot be used in M2M mode with another sensor simultaneously.
>>>>
>>>
>>> Yes, my point is trying to understand "how it is configured" and what
>>> your expectations are.
>>>
>>> Will the board .dts (or a camera .dtso) decide how the ISP is operated
>>> by defining its endpoint connections ? Assuming with the same SoC both
>>> inline and m2m modes are possible, without differences in the SoC
>>> design/integration, will users of the same board have to modify the
>>> .dts or load ad-hoc .dtso to decide what mode is in use ?
>>>
>>> Then, the question of how the media topology will look and which
>>> components registers what has to be clarified.
>>>
>>> Let's try to make a taxonomy of the cases we have in mainline (or on
>>> their way to mainline).
>>>
>>> In the mali example I mentioned, the operating mode is selected by the
>>> .dtsi as Mali can be integrated either inline or in m2m mode in
>>> different SoCs. RZ/V2H in example, will always be m2m as it doesn't
>>> interface the CSI-2 receiver with the ISP but rather interfaces the
>>> ISP with a companion chip the performs memory access on its behalf
>>> (the IVC). A different design that incorporates Mali inline will
>>> instead have to interface the CSI-2 receiver with the ISP with
>>> internal busses/glue logic and will then have to described this in dts.
>>>
>>> This is fine as the ISP integration is different and then having the
>>> description in dts is legit.
>>>
>>> The ISP driver unconditionally registers an async notifier and the
>>> downstream component (csi-2 or IVC) will register its async subdev(s)
>>> which will all appear in the ISP media graph. This is possible because
>>> the assumption is that the CSI-2 receiver (or the companion chip)
>>> won't register their own media graph.
>>>
>>> The Renesas V4H example I mentioned is instead different. The ISP can
>>> be operated in inline and m2m, on the same SoC without any
>>> modification to hardware and to the dts/dtsi. It's basically a user
>>> choice we defer to runtime.
>>>
>>> The V4H already has a component that registers a media graph: the
>>> CSI-2/VIN block which is found in many SoCs of the same (and older)
>>> generations. The ISP is present only in some SoC, but the CSI-2/VIN is
>>> always there. In this case, to support both inline and m2m modes, the
>>> VIN registers the media device and, with the trick I pointed you to in
>>> Niklas' code, the ISP registers a subdev in the VIN media graph. Then
>>> the inline/m2m mode can be selected by media link enablement at
>>> run-time. Now, inline mode is not yet supported on V4H and there might
>>> be dragons there, but at least, both modes should be possible on the same
>>> SoC.
>>>
>>> On the other extremes we have the RaspberryPi PiSP BE and RkISP1.
>>>
>>> RPi knows the only SoC where the PiPS will be found is their one. The
>>> ISP cannot function inline and will always be m2m. In this case, a
>>> dedicated media graph for the ISP is the simplest and cleanest
>>> solution.
>>>
>>> RkISP1 instead will always be inline only. It registers a media device
>>> and an async notifier, the connected CSI-2 receiver will register an
>>> async subdev and will be connected to the device tree endpoint of the
>>> ISP device node.
>>>
>>> What model is the closest one to the neoisp integration that you
>>> envision on NXP SoCs ?
>>
>> Then the closest model is the V4H one I believe: we both support m2m and
>> streaming (inline) modes on the same SoC. I tested the trick you pointed
>> out, and let the formatter sharing the media device (owned by ISI) to the
>> neo ISP, like renesas csisp does. It registers as expected, thanks for the
>> proposal !
>>
>> I think formatter is a good candidate since it is physically connected to
>> ISP through a pixel link for streaming mode. Moreover, I propose to create a
>> dedicated pad b/w formatter and ISP and keep the one b/w formatter and ISI
>> as it is, so that in future we can configure the stream format which is sent
>> to ISP, and the one sent to ISI.
>
> So, if I look at the ISI media graph you shared earlier in the thread,
> the formatter will gain one source pad to be optionally connected to
> the ISP, while the existing one that connectes to the crossbar will
> stay as it is today ?
Yes exactly. However, I don't plan to push the pad changes on the M2M
patch series yet. I would rather create the pads (formatter and ISP)
together with the introduction of the inline mode.
>
>>
>> I also tested the streaming path can be added in device tree with endpoint
>> connections between the nodes, so that ISP can create the media link when it
>> registers itself to the media device.
>
> I think this is fine if there actually is a data path between the
> formatter and the ISP as you have suggested.
Yes there is a pixel link between formatter and ISP (at least on i.MX95
SoC).
>
>>
>> Thus at runtime, if userspace enables this link, then neo runs in streaming
>> mode, otherwise m2m is used.
>
> So if we have an ISI, the ISP can be operated in m2m or inline based
> on run-time link enablement, right ?
Yes. And as per my understanding, ISI could still be used with
inline-ISP, to capture raw frame.
>
>>
>> If another SoC in future doesn't support streaming path, the endpoints can
>> be removed from device tree, the ISP would stay in media graph anyway with
>> m2m mode only.
>
> Nice!
>
> Do you envision a streaming mode only design, where there is no ISI
> and the ISP has to register the media device itself ?
AFAIK, there is no such design, ISI is always there.
However, I initially though about adding an ISP "standalone" mode, where
ISP could register its own media device (as it was done before). That
could ease standalone test I believe, and limit dependency with other
drivers. But I don't know how this can cohabit with the phandle
registration approach, except by adding a new optional property on
neoisp node to force standalone registration, or a module parameter.
Do you think it's worth adding such standalone mode ? and if yes, how
can we enable it in a proper way ?
>
>>
>> Do you think this is good approach ?
>>
>
> Certainly so! Thanks for the effort!
>
>>>
>>>>>
>>>>> One small correction after some more research:
>>>>>
>>>>> we actually already have a pipeline in libcamera that supports inline
>>>>> and (will soon) support m2m: the mali c55 one. My take on "probably
>>>>> need two pipeline handlers" was not correct then.
>>>>
>>>> Yes, I saw your patchwork on libcamera about this coming upgrade. Spent some
>>>> time analyzing it ':) Seems we are quite aligned as per my understanding:
>>>> inline mode (i.e. streaming mode with neoisp) _or_ M2M mode using IVC video
>>>> device from Mali. Is that right ?
>>>>
>>>>>
>>>>> As said, Mali-C55 can be integrated inline or in m2m mode and this is
>>>>> decided based on the device tree endpoint connections.
>>>>
>>>> Good. Do you have an example available ?
>>>
>>> It's in mainline, but there's nothing exciting there as the assumption
>>> is that there will always be a connection on the first endpoint and
>>> the driver simply registers a notifier for the connected async subdev. If
>>> it's a CSI-2 receiver then we're inline. If it's a companion chip
>>> we're m2m.
>>>
>>> The libcamera pipeline (not upstream yet) inspects the media entity
>>> function of the entity connected to the ISP sink pad#0. If it's a
>>> CSI-2 reciver we're inline. If it's not, we're m2m. Based on that it
>>> operated the pipeline differently.
>>>
>>>>
>>>>>
>>>>> So, if you know neoisp will be integrated either inline or m2m in
>>>>> different SoC lines, maybe deferring it to device tree is good enough
>>>>> at the expense of a slightly more complicated pipeline ?
>>>>
>>>> As said, SoC/ISP HW does support both modes. But I think that the selection
>>>> can be done in device tree too. So that after bootup, a camera will be used
>>>> only in 1 mode.
>>>>
>>>>>
>>>>> I guess this has implications on the bindings definition as well..
>>>>
>>>> Most probably yes. Can this be done as second phase once evaluation is
>>>> completed ?
>>>>
>>>
>>> I think you should asses from the very beginning what is the planned
>>> integration model of the ISP in order not to corner yourself in a
>>> place where it will be hard to support inline without re-writing
>>> the driver's media device registration logic.
>>>
>>> Looking at the below media graph of CSI/ISI you should ask the question "how
>>> will I register the ISP subdev in the CSI-2 media graph when inline"
>>> and "how will I describe inline vs m2m mode if the underlying hardware
>>> design doesn't change?" as deferring it to the .dts might not be the
>>> most correct way to go in that case ?
>>
>> So I think we are aligned now: one media graph from the beginning for
>> supporting both modes, even if first mainline version only supports m2m.
>> Would that be ok ?
>>
>
> Yes!
>
> Let's only just clarify if there will ever be a mode where there is no
> ISI as in that case I think we need to clarify who will register the
> media graph and the async notifiers..
Fine. Let me prepare a patchset with all changes already discussed then.
I keep standalone mode out for the moment.
BR
Antoine
>
>>>
>>>>>
>>>>>>
>>>>>> However, if you plan to allow deferring inline/m2m mode selection to
>>>>>> the system integrators or even have it as a run-time parameter, then
>>>>>> you should really consider having the ISP in the same media graph as
>>>>>> the CSI-2 receiver and operate the whole CSI-2/ISI/ISP as a single
>>>>>> media graph, where you could select the operating mode through media link
>>>>>> enablement or dts endpoint connections
>>>>>>
>>>>>> Niklas (in cc) has addressed a similar situation, where inline and m2m
>>>>>> mode can be selected by link enablement at runtime here
>>>>>> https://patchwork.linuxtv.org/project/linux-media/patch/20251225171054.1370856-3-niklas.soderlund+renesas@ragnatech.se/
>>>>>> (see risp_cs_internal_ops)
>>>>>>
>>>>>>>
>>>>>>> OK, I thought that ISI was still around...
>>>>>>>
>>>>>>>>
>>>>>>>>> - How many media devices are registered and which driver registers it
>>>>>>>>> or them?
>>>>>>>>
>>>>>>>> That will be part of the evaluation. My initial assumption is that
>>>>>>>> neoisp would be the appropriate component to register the media device
>>>>>>>> in this mode, since ISI is not involved, and ISI currently performs the
>>>>>>>> registration in the M2M configuration.
>>>>>>
>>>>>> Isn't the ISP registering its own media graph ?
>>>>
>>>> Yes, 8 copies of ISP media graph, that can be used with the 8 output video
>>>> devices of the ISI media graph.
>>>>
>>>
>>> I suggest you do what RPi does. The mainline driver only registers one
>>> instance and they carry a little patch downstream that implements the
>>> for() loop where multiple instances are registered. Duplicating media graphs
>>> is not desirable (at least in mainline) as we can have ISPs with 256
>>> contexts, we don't want 256 media graphs.
>>
>> Ok. Will do same approach then: 1 neoisp instance on mainline + downstream
>> patch to create other instances (x8), all in same media graph.
>
> Thank you. Let's work on a proper solution and then the downstream
> patch will be dropped!
>
>>
>>>
>>> A framework level solution with proper priority handling and job
>>> scheduling is what is required and that's what the context work should
>>> end up being.>
>>>
>>>>>>
>>>>>> Can we get a copy of all media graphs on an i.MX95 system including
>>>>>> the ISI and the CSI-2 receiver ?
>>>>
>>>> Here is an example with multiple sensors. Or do you need it in another
>>>> format ?
>>>
>>> No it's fine, thanks!
>>>
>>>>
>>>>
>>>> digraph board {
>>>> rankdir=TB
>>>> n00000001 [label="{{<port0> 0 | <port1> 1 | <port2> 2 | <port3> 3 |
>>>> <port4> 4} | crossbar\n/dev/v4l-subdev8 | {<port5> 5 | <port6> 6 | <port7> 7
>>>> | <port8> 8 | <port9> 9 | <port10> 10 | <port11> 11 | <port12> 12}}",
>>>> shape=Mrecord, style=filled, fillcolor=green]
>>>> n00000001:port5 -> n0000000f:port0 [style=bold]
>>>> n00000001:port6 -> n0000001a:port0 [style=bold]
>>>> n00000001:port7 -> n00000025:port0 [style=bold]
>>>> n00000001:port8 -> n00000030:port0 [style=bold]
>>>> n00000001:port9 -> n0000003b:port0 [style=bold]
>>>> n00000001:port10 -> n00000046:port0 [style=bold]
>>>> n00000001:port11 -> n00000051:port0 [style=bold]
>>>> n00000001:port12 -> n0000005c:port0 [style=bold]
>>>> n0000000f [label="{{<port0> 0} | mxc_isi.0\n/dev/v4l-subdev9 |
>>>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n0000000f:port1 -> n00000012 [style=bold]
>>>> n00000012 [label="mxc_isi.0.capture\n/dev/video8", shape=box,
>>>> style=filled, fillcolor=yellow]
>>>> n0000001a [label="{{<port0> 0} | mxc_isi.1\n/dev/v4l-subdev10 |
>>>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n0000001a:port1 -> n0000001d [style=bold]
>>>> n0000001d [label="mxc_isi.1.capture\n/dev/video9", shape=box,
>>>> style=filled, fillcolor=yellow]
>>>> n00000025 [label="{{<port0> 0} | mxc_isi.2\n/dev/v4l-subdev11 |
>>>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n00000025:port1 -> n00000028 [style=bold]
>>>> n00000028 [label="mxc_isi.2.capture\n/dev/video10", shape=box,
>>>> style=filled, fillcolor=yellow]
>>>> n00000030 [label="{{<port0> 0} | mxc_isi.3\n/dev/v4l-subdev12 |
>>>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n00000030:port1 -> n00000033 [style=bold]
>>>> n00000033 [label="mxc_isi.3.capture\n/dev/video13", shape=box,
>>>> style=filled, fillcolor=yellow]
>>>> n0000003b [label="{{<port0> 0} | mxc_isi.4\n/dev/v4l-subdev13 |
>>>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n0000003b:port1 -> n0000003e [style=bold]
>>>> n0000003e [label="mxc_isi.4.capture\n/dev/video14", shape=box,
>>>> style=filled, fillcolor=yellow]
>>>> n00000046 [label="{{<port0> 0} | mxc_isi.5\n/dev/v4l-subdev14 |
>>>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n00000046:port1 -> n00000049 [style=bold]
>>>> n00000049 [label="mxc_isi.5.capture\n/dev/video21", shape=box,
>>>> style=filled, fillcolor=yellow]
>>>> n00000051 [label="{{<port0> 0} | mxc_isi.6\n/dev/v4l-subdev15 |
>>>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n00000051:port1 -> n00000054 [style=bold]
>>>> n00000054 [label="mxc_isi.6.capture\n/dev/video22", shape=box,
>>>> style=filled, fillcolor=yellow]
>>>> n0000005c [label="{{<port0> 0} | mxc_isi.7\n/dev/v4l-subdev16 |
>>>> {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n0000005c:port1 -> n0000005f [style=bold]
>>>> n0000005f [label="mxc_isi.7.capture\n/dev/video23", shape=box,
>>>> style=filled, fillcolor=yellow]
>>>> n00000067 [label="mxc_isi.output\n", shape=box, style=filled,
>>>> fillcolor=yellow]
>>>> n00000067 -> n00000001:port4 [style=bold]
>>>> n0000006e [label="{{<port0> 0} |
>>>> 4ac10000.syscon:formatter@20\n/dev/v4l-subdev17 | {<port1> 1}}",
>>>> shape=Mrecord, style=filled, fillcolor=green]
>>>> n0000006e:port1 -> n00000001:port2 [style=bold]
>>>> n00000073 [label="{{<port0> 0} |
>>>> csidev-4ad30000.csi\n/dev/v4l-subdev18 | {<port1> 1}}", shape=Mrecord,
>>>> style=filled, fillcolor=green]
>>>> n00000073:port1 -> n0000006e:port0 [style=bold]
>>>> n00000078 [label="{{<port0> 0 | <port1> 1 | <port2> 2 | <port3> 3} |
>>>> max96724 2-0027\n/dev/v4l-subdev19 | {<port4> 4 | <port5> 5}}",
>>>> shape=Mrecord, style=filled, fillcolor=green]
>>>> n00000078:port4 -> n00000073:port0 [style=dashed]
>>>> n00000081 [label="{{} | mx95mbcam 8-0040\n/dev/v4l-subdev20 |
>>>> {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n00000081:port0 -> n00000078:port0 [style=bold]
>>>> n00000085 [label="{{} | mx95mbcam 9-0040\n/dev/v4l-subdev21 |
>>>> {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n00000085:port0 -> n00000078:port1 [style=bold]
>>>> n00000089 [label="{{} | mx95mbcam 10-0040\n/dev/v4l-subdev22 |
>>>> {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n00000089:port0 -> n00000078:port2 [style=bold]
>>>> n0000008d [label="{{} | mx95mbcam 11-0040\n/dev/v4l-subdev23 |
>>>> {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
>>>> n0000008d:port0 -> n00000078:port3 [style=bold]
>>>> }
>>>>
>>>>
>>>>>>
>>>>>> If I'm not mistaken you'll have 8 copies of the ISP media graphs, and
>>>>>> that's exactly what we're working on with the context framework :)
>>>>>>
>>>>
>>>> Ok. Then I should have a look to context framework too ...
>>>>
>>>
>>> Please, I hope to be able to resume working on it sooner or later
>>> given the right use case.
>>
>> Ok. Will continue monitoring the multi context work. Seems to be a nice
>> feature indeed. But as impact on userspace is more significant, that can be
>> done as a second step I guess, and will keep the multi instance downstream
>> patch meanwhile.
>>
>>>
>>>>>>
>>>>>>>
>>>>>>> ... since it is not, your assumption seems very reasonable.
>>>>>>>
>>>>>>>>
>>>>>>>>> - How can the user decide whether direct (csi2isp) or indirect
>>>>>>>>> (mem2mem) streaming shall be used?
>>>>>>>>
>>>>>>>> That will also be part of the evaluation. From dts would be my first
>>>>>>>> option, but may prevent using both modes on same platform then.
>>>>>>>
>>>>>>> Of course this depends what the hardware is able to do, but in case the
>>>>>>> HW is reconfigurable easily, I doubt that device tree is a good choice
>>>>>>> to solve that.
>>>>>>>>
>>>>>>>>>
>>>>>>>>> While it is certainly OK to introduce this support only at a later
>>>>>>>>> stage, it makes sense to consider this right from the start to avoid
>>>>>>>>> some nasty changes e.g. in how this hardware is exposed to user space.
>>>>>>>>>
>>>>>>>>> Also, we are facing a similiar challenge with recent Rockchip ISP
>>>>>>>>> hardware (RK3588, RK3576, ...) and it would be great to hear your
>>>>>>>>> thoughts about that.
>>>>>>>>
>>>>>>>> Is there an existing discussion thread available on this topic? I would
>>>>>>>> be very interested in following it.
>>>>>>>
>>>>>>> Not yet, I am afraid. But there should be one or two soon (TM) :-)
>>>>>>
>>>>>> It's probably time to have one :)
>>>>
>>>> Good. Please loop me in ;)
>>>
>>> You are in, this is the conversation ;)
>>>
>>> It might be a good discussion point for the media summit in Nice
>>> co-located with Embedded Recipes if people with interest in the topic
>>> will going the be there.
>>
>> Great ! Will try to join then.
>>
>
> I'm not sure yet how many interested parties will be in Nice and if it
> would make sense to organize an "ISP design day" there or should we
> plan a devroom for Plumbers in Prague ?
>
>
>> BR
>> Antoine
>>
>>>
>>> I'm also adding Anthony from ARM as I know he's going through the same
>>> inline/m2m duality you're now facing.
>>>
>>> Thanks
>>> j
>>>
>>>>
>>>> BR
>>>> Antoine
>>>>
>>>>>>
>>>>>>>
>>>>>>> Thanks and regards,
>>>>>>> Michael
>>>>>>>
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>> Antoine
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks in advance and best regards,
>>>>>>>>> Michael
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> This series is posted as RFC because extending the v4l2-isp interface
>>>>>>>>>> may
>>>>>>>>>> overlap with ongoing work. If similar development already exists, I am
>>>>>>>>>> happy to rebase or adapt the series accordingly. If preferred, the
>>>>>>>>>> series
>>>>>>>>>> can also be split into two parts: the v4l2-isp rework and the Neo ISP
>>>>>>>>>> driver introduction.
>>>>>>>>>>
>>>>>>>>>> A few checkpatch warnings in v4l2-ioctl.c remain intentionally to stay
>>>>>>>>>> consistent with the existing style in that file.
>>>>>>>>>>
>>>>>>>>>> Testing was performed on the i.MX95 EVK using the media/next kernel in
>>>>>>>>>> standalone M2M mode. End-to-end camera-to-ISP capture has been validated
>>>>>>>>>> using the downstream NXP kernel, as some hardware dependencies are not
>>>>>>>>>> yet upstreamed.
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Antoine
>>>>>>>>>>
>>>>>>>>>> ---
>>>>>>>>>> Here are v4l2-compliance test results:
>>>>>>>>>>
>>>>>>>>>> v4l2-compliance 1.28.1-5233, 64 bits, 64-bit time_t
>>>>>>>>>> v4l2-compliance SHA: fc15e229d9d3 2024-07-23 19:22:15
>>>>>>>>>>
>>>>>>>>>> Compliance test for neoisp device /dev/media0:
>>>>>>>>>>
>>>>>>>>>> Media Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Model : neoisp
>>>>>>>>>> Serial :
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Media version : 6.19.0
>>>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>>>> Driver version : 6.19.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:
>>>>>>>>>> test MEDIA_IOC_G_TOPOLOGY: OK
>>>>>>>>>> Entities: 7 Interfaces: 7 Pads: 12 Links: 13
>>>>>>>>>> test MEDIA_IOC_ENUM_ENTITIES/LINKS: OK
>>>>>>>>>> test MEDIA_IOC_SETUP_LINK: OK
>>>>>>>>>>
>>>>>>>>>> Total for neoisp device /dev/media0: 8, Succeeded: 8, Failed: 0,
>>>>>>>>>> Warnings: 0
>>>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>>>> Compliance test for neoisp device /dev/video0:
>>>>>>>>>>
>>>>>>>>>> Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Card type : neoisp
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>>>> Video Capture Multiplanar
>>>>>>>>>> Video Output Multiplanar
>>>>>>>>>> Metadata Capture
>>>>>>>>>> Metadata Output
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Device Capabilities
>>>>>>>>>> Device Caps : 0x04202000
>>>>>>>>>> Video Output Multiplanar
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Media Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Model : neoisp
>>>>>>>>>> Serial :
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Media version : 6.19.0
>>>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Interface Info:
>>>>>>>>>> ID : 0x0300000a
>>>>>>>>>> Type : V4L Video
>>>>>>>>>> Entity Info:
>>>>>>>>>> ID : 0x00000008 (8)
>>>>>>>>>> Name : neoisp-input0
>>>>>>>>>> Function : V4L2 I/O
>>>>>>>>>> Pad 0x01000009 : 0: Source
>>>>>>>>>> Link 0x0200000c: to remote pad 0x1000002 of entity
>>>>>>>>>> 'neoisp' (Image Signal Processor): Data, Enabled, Immutable
>>>>>>>>>>
>>>>>>>>>> Required ioctls:
>>>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test invalid ioctls: OK
>>>>>>>>>>
>>>>>>>>>> Allow for multiple opens:
>>>>>>>>>> test second /dev/video0 open: OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>>>> test for unlimited opens: OK
>>>>>>>>>>
>>>>>>>>>> Debug ioctls:
>>>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Input ioctls:
>>>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>>>
>>>>>>>>>> Output ioctls:
>>>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>>>
>>>>>>>>>> Input/Output configuration ioctls:
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Control ioctls:
>>>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>>>
>>>>>>>>>> Format ioctls:
>>>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>>>> test Cropping: OK
>>>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>>>> test Scaling: OK
>>>>>>>>>>
>>>>>>>>>> Codec ioctls:
>>>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Buffer ioctls:
>>>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Total for neoisp device /dev/video0: 48, Succeeded: 48, Failed: 0,
>>>>>>>>>> Warnings: 0
>>>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>>>> Compliance test for neoisp device /dev/video1:
>>>>>>>>>>
>>>>>>>>>> Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Card type : neoisp
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>>>> Video Capture Multiplanar
>>>>>>>>>> Video Output Multiplanar
>>>>>>>>>> Metadata Capture
>>>>>>>>>> Metadata Output
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Device Capabilities
>>>>>>>>>> Device Caps : 0x04202000
>>>>>>>>>> Video Output Multiplanar
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Media Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Model : neoisp
>>>>>>>>>> Serial :
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Media version : 6.19.0
>>>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Interface Info:
>>>>>>>>>> ID : 0x03000010
>>>>>>>>>> Type : V4L Video
>>>>>>>>>> Entity Info:
>>>>>>>>>> ID : 0x0000000e (14)
>>>>>>>>>> Name : neoisp-input1
>>>>>>>>>> Function : V4L2 I/O
>>>>>>>>>> Pad 0x0100000f : 0: Source
>>>>>>>>>> Link 0x02000012: to remote pad 0x1000003 of entity
>>>>>>>>>> 'neoisp' (Image Signal Processor): Data
>>>>>>>>>>
>>>>>>>>>> Required ioctls:
>>>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test invalid ioctls: OK
>>>>>>>>>>
>>>>>>>>>> Allow for multiple opens:
>>>>>>>>>> test second /dev/video1 open: OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>>>> test for unlimited opens: OK
>>>>>>>>>>
>>>>>>>>>> Debug ioctls:
>>>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Input ioctls:
>>>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>>>
>>>>>>>>>> Output ioctls:
>>>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>>>
>>>>>>>>>> Input/Output configuration ioctls:
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Control ioctls:
>>>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>>>
>>>>>>>>>> Format ioctls:
>>>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>>>> test Cropping: OK
>>>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>>>> test Scaling: OK
>>>>>>>>>>
>>>>>>>>>> Codec ioctls:
>>>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Buffer ioctls:
>>>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Total for neoisp device /dev/video1: 48, Succeeded: 48, Failed: 0,
>>>>>>>>>> Warnings: 0
>>>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>>>> Compliance test for neoisp device /dev/video2:
>>>>>>>>>>
>>>>>>>>>> Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Card type : neoisp
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>>>> Video Capture Multiplanar
>>>>>>>>>> Video Output Multiplanar
>>>>>>>>>> Metadata Capture
>>>>>>>>>> Metadata Output
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Device Capabilities
>>>>>>>>>> Device Caps : 0x0c200000
>>>>>>>>>> Metadata Output
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Media Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Model : neoisp
>>>>>>>>>> Serial :
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Media version : 6.19.0
>>>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Interface Info:
>>>>>>>>>> ID : 0x03000016
>>>>>>>>>> Type : V4L Video
>>>>>>>>>> Entity Info:
>>>>>>>>>> ID : 0x00000014 (20)
>>>>>>>>>> Name : neoisp-params
>>>>>>>>>> Function : V4L2 I/O
>>>>>>>>>> Pad 0x01000015 : 0: Source
>>>>>>>>>> Link 0x02000018: to remote pad 0x1000004 of entity
>>>>>>>>>> 'neoisp' (Image Signal Processor): Data, Enabled
>>>>>>>>>>
>>>>>>>>>> Required ioctls:
>>>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test invalid ioctls: OK
>>>>>>>>>>
>>>>>>>>>> Allow for multiple opens:
>>>>>>>>>> test second /dev/video2 open: OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>>>> test for unlimited opens: OK
>>>>>>>>>>
>>>>>>>>>> Debug ioctls:
>>>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Input ioctls:
>>>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>>>
>>>>>>>>>> Output ioctls:
>>>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>>>
>>>>>>>>>> Input/Output configuration ioctls:
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Control ioctls:
>>>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>>>
>>>>>>>>>> Format ioctls:
>>>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>>>> test Cropping: OK (Not Supported)
>>>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>>>> test Scaling: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Codec ioctls:
>>>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Buffer ioctls:
>>>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Total for neoisp device /dev/video2: 48, Succeeded: 48, Failed: 0,
>>>>>>>>>> Warnings: 0
>>>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>>>> Compliance test for neoisp device /dev/video3:
>>>>>>>>>>
>>>>>>>>>> Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Card type : neoisp
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>>>> Video Capture Multiplanar
>>>>>>>>>> Video Output Multiplanar
>>>>>>>>>> Metadata Capture
>>>>>>>>>> Metadata Output
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Device Capabilities
>>>>>>>>>> Device Caps : 0x04201000
>>>>>>>>>> Video Capture Multiplanar
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Media Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Model : neoisp
>>>>>>>>>> Serial :
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Media version : 6.19.0
>>>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Interface Info:
>>>>>>>>>> ID : 0x0300001c
>>>>>>>>>> Type : V4L Video
>>>>>>>>>> Entity Info:
>>>>>>>>>> ID : 0x0000001a (26)
>>>>>>>>>> Name : neoisp-frame
>>>>>>>>>> Function : V4L2 I/O
>>>>>>>>>> Pad 0x0100001b : 0: Sink
>>>>>>>>>> Link 0x0200001e: from remote pad 0x1000005 of entity
>>>>>>>>>> 'neoisp' (Image Signal Processor): Data, Enabled
>>>>>>>>>>
>>>>>>>>>> Required ioctls:
>>>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test invalid ioctls: OK
>>>>>>>>>>
>>>>>>>>>> Allow for multiple opens:
>>>>>>>>>> test second /dev/video3 open: OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>>>> test for unlimited opens: OK
>>>>>>>>>>
>>>>>>>>>> Debug ioctls:
>>>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Input ioctls:
>>>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>>>
>>>>>>>>>> Output ioctls:
>>>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>>>
>>>>>>>>>> Input/Output configuration ioctls:
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Control ioctls:
>>>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>>>
>>>>>>>>>> Format ioctls:
>>>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>>>> test Cropping: OK (Not Supported)
>>>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>>>> test Scaling: OK
>>>>>>>>>>
>>>>>>>>>> Codec ioctls:
>>>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Buffer ioctls:
>>>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Total for neoisp device /dev/video3: 48, Succeeded: 48, Failed: 0,
>>>>>>>>>> Warnings: 0
>>>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>>>> Compliance test for neoisp device /dev/video4:
>>>>>>>>>>
>>>>>>>>>> Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Card type : neoisp
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>>>> Video Capture Multiplanar
>>>>>>>>>> Video Output Multiplanar
>>>>>>>>>> Metadata Capture
>>>>>>>>>> Metadata Output
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Device Capabilities
>>>>>>>>>> Device Caps : 0x04201000
>>>>>>>>>> Video Capture Multiplanar
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Media Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Model : neoisp
>>>>>>>>>> Serial :
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Media version : 6.19.0
>>>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Interface Info:
>>>>>>>>>> ID : 0x03000022
>>>>>>>>>> Type : V4L Video
>>>>>>>>>> Entity Info:
>>>>>>>>>> ID : 0x00000020 (32)
>>>>>>>>>> Name : neoisp-ir
>>>>>>>>>> Function : V4L2 I/O
>>>>>>>>>> Pad 0x01000021 : 0: Sink
>>>>>>>>>> Link 0x02000024: from remote pad 0x1000006 of entity
>>>>>>>>>> 'neoisp' (Image Signal Processor): Data
>>>>>>>>>>
>>>>>>>>>> Required ioctls:
>>>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test invalid ioctls: OK
>>>>>>>>>>
>>>>>>>>>> Allow for multiple opens:
>>>>>>>>>> test second /dev/video4 open: OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>>>> test for unlimited opens: OK
>>>>>>>>>>
>>>>>>>>>> Debug ioctls:
>>>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Input ioctls:
>>>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>>>
>>>>>>>>>> Output ioctls:
>>>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>>>
>>>>>>>>>> Input/Output configuration ioctls:
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Control ioctls:
>>>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>>>
>>>>>>>>>> Format ioctls:
>>>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>>>> test Cropping: OK (Not Supported)
>>>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>>>> test Scaling: OK
>>>>>>>>>>
>>>>>>>>>> Codec ioctls:
>>>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Buffer ioctls:
>>>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Total for neoisp device /dev/video4: 48, Succeeded: 48, Failed: 0,
>>>>>>>>>> Warnings: 0
>>>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>>>> Compliance test for neoisp device /dev/video5:
>>>>>>>>>>
>>>>>>>>>> Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Card type : neoisp
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Capabilities : 0x8ca03000
>>>>>>>>>> Video Capture Multiplanar
>>>>>>>>>> Video Output Multiplanar
>>>>>>>>>> Metadata Capture
>>>>>>>>>> Metadata Output
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Device Capabilities
>>>>>>>>>> Device Caps : 0x04a00000
>>>>>>>>>> Metadata Capture
>>>>>>>>>> Streaming
>>>>>>>>>> Extended Pix Format
>>>>>>>>>> Media Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Model : neoisp
>>>>>>>>>> Serial :
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Media version : 6.19.0
>>>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Interface Info:
>>>>>>>>>> ID : 0x03000028
>>>>>>>>>> Type : V4L Video
>>>>>>>>>> Entity Info:
>>>>>>>>>> ID : 0x00000026 (38)
>>>>>>>>>> Name : neoisp-stats
>>>>>>>>>> Function : V4L2 I/O
>>>>>>>>>> Pad 0x01000027 : 0: Sink
>>>>>>>>>> Link 0x0200002a: from remote pad 0x1000007 of entity
>>>>>>>>>> 'neoisp' (Image Signal Processor): Data, Enabled
>>>>>>>>>>
>>>>>>>>>> Required ioctls:
>>>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test invalid ioctls: OK
>>>>>>>>>>
>>>>>>>>>> Allow for multiple opens:
>>>>>>>>>> test second /dev/video5 open: OK
>>>>>>>>>> test VIDIOC_QUERYCAP: OK
>>>>>>>>>> test VIDIOC_G/S_PRIORITY: OK
>>>>>>>>>> test for unlimited opens: OK
>>>>>>>>>>
>>>>>>>>>> Debug ioctls:
>>>>>>>>>> test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
>>>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Input ioctls:
>>>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>>>
>>>>>>>>>> Output ioctls:
>>>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>>>
>>>>>>>>>> Input/Output configuration ioctls:
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Control ioctls:
>>>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
>>>>>>>>>> test VIDIOC_QUERYCTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_CTRL: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>>>> Standard Controls: 0 Private Controls: 0
>>>>>>>>>>
>>>>>>>>>> Format ioctls:
>>>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FMT: OK
>>>>>>>>>> test VIDIOC_TRY_FMT: OK
>>>>>>>>>> test VIDIOC_S_FMT: OK
>>>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>>>> test Cropping: OK (Not Supported)
>>>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>>>> test Scaling: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Codec ioctls:
>>>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Buffer ioctls:
>>>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>>>> test VIDIOC_EXPBUF: OK
>>>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Total for neoisp device /dev/video5: 48, Succeeded: 48, Failed: 0,
>>>>>>>>>> Warnings: 0
>>>>>>>>>> --------------------------------------------------------------------------------
>>>>>>>>>> Compliance test for neoisp device /dev/v4l-subdev0:
>>>>>>>>>>
>>>>>>>>>> Driver Info:
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Capabilities : 0x00000000
>>>>>>>>>> Client Capabilities: 0x0000000000000002
>>>>>>>>>> interval-uses-which Media Driver Info:
>>>>>>>>>> Driver name : neoisp
>>>>>>>>>> Model : neoisp
>>>>>>>>>> Serial :
>>>>>>>>>> Bus info : platform:4ae00000.isp
>>>>>>>>>> Media version : 6.19.0
>>>>>>>>>> Hardware revision: 0x00000002 (2)
>>>>>>>>>> Driver version : 6.19.0
>>>>>>>>>> Interface Info:
>>>>>>>>>> ID : 0x0300002c
>>>>>>>>>> Type : V4L Sub-Device
>>>>>>>>>> Entity Info:
>>>>>>>>>> ID : 0x00000001 (1)
>>>>>>>>>> Name : neoisp
>>>>>>>>>> Function : Image Signal Processor
>>>>>>>>>> Pad 0x01000002 : 0: Sink
>>>>>>>>>> Link 0x0200000c: from remote pad 0x1000009 of entity
>>>>>>>>>> 'neoisp-input0' (V4L2 I/O): Data, Enabled, Immutable
>>>>>>>>>> Pad 0x01000003 : 1: Sink
>>>>>>>>>> Link 0x02000012: from remote pad 0x100000f of entity
>>>>>>>>>> 'neoisp-input1' (V4L2 I/O): Data
>>>>>>>>>> Pad 0x01000004 : 2: Sink
>>>>>>>>>> Link 0x02000018: from remote pad 0x1000015 of entity
>>>>>>>>>> 'neoisp-params' (V4L2 I/O): Data, Enabled
>>>>>>>>>> Pad 0x01000005 : 3: Source
>>>>>>>>>> Link 0x0200001e: to remote pad 0x100001b of entity 'neoisp-
>>>>>>>>>> frame' (V4L2 I/O): Data, Enabled
>>>>>>>>>> Pad 0x01000006 : 4: Source
>>>>>>>>>> Link 0x02000024: to remote pad 0x1000021 of entity 'neoisp-
>>>>>>>>>> ir' (V4L2 I/O): Data
>>>>>>>>>> Pad 0x01000007 : 5: Source
>>>>>>>>>> Link 0x0200002a: to remote pad 0x1000027 of entity 'neoisp-
>>>>>>>>>> stats' (V4L2 I/O): Data, Enabled
>>>>>>>>>>
>>>>>>>>>> Required ioctls:
>>>>>>>>>> test MC information (see 'Media Driver Info' above): OK
>>>>>>>>>> test VIDIOC_SUDBEV_QUERYCAP: OK
>>>>>>>>>> test invalid ioctls: OK
>>>>>>>>>>
>>>>>>>>>> Allow for multiple opens:
>>>>>>>>>> test second /dev/v4l-subdev0 open: OK
>>>>>>>>>> test VIDIOC_SUBDEV_QUERYCAP: OK
>>>>>>>>>> test for unlimited opens: OK
>>>>>>>>>>
>>>>>>>>>> Debug ioctls:
>>>>>>>>>> test VIDIOC_LOG_STATUS: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Input ioctls:
>>>>>>>>>> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDIO: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDIO: OK (Not Supported)
>>>>>>>>>> Inputs: 0 Audio Inputs: 0 Tuners: 0
>>>>>>>>>>
>>>>>>>>>> Output ioctls:
>>>>>>>>>> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
>>>>>>>>>> Outputs: 0 Audio Outputs: 0 Modulators: 0
>>>>>>>>>>
>>>>>>>>>> Input/Output configuration ioctls:
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
>>>>>>>>>> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Sub-Device ioctls (Sink Pad 0):
>>>>>>>>>> Try Stream 0
>>>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> Active Stream 0
>>>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Sub-Device ioctls (Sink Pad 1):
>>>>>>>>>> Try Stream 0
>>>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> Active Stream 0
>>>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Sub-Device ioctls (Sink Pad 2):
>>>>>>>>>> Try Stream 0
>>>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> Active Stream 0
>>>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Sub-Device ioctls (Source Pad 3):
>>>>>>>>>> Try Stream 0
>>>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> Active Stream 0
>>>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Sub-Device ioctls (Source Pad 4):
>>>>>>>>>> Try Stream 0
>>>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> Active Stream 0
>>>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Sub-Device ioctls (Source Pad 5):
>>>>>>>>>> Try Stream 0
>>>>>>>>>> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> Active Stream 0
>>>>>>>>>> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
>>>>>>>>>> FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
>>>>>>>>>> test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Control ioctls:
>>>>>>>>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
>>>>>>>>>> test VIDIOC_QUERYCTRL: OK
>>>>>>>>>> test VIDIOC_G/S_CTRL: OK
>>>>>>>>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK
>>>>>>>>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
>>>>>>>>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>>>>>>>>> Standard Controls: 1 Private Controls: 1
>>>>>>>>>>
>>>>>>>>>> Format ioctls:
>>>>>>>>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not
>>>>>>>>>> Supported)
>>>>>>>>>> test VIDIOC_G/S_PARM: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FBUF: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_FMT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_TRY_FMT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_S_FMT: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
>>>>>>>>>> test Cropping: OK (Not Supported)
>>>>>>>>>> test Composing: OK (Not Supported)
>>>>>>>>>> test Scaling: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Codec ioctls:
>>>>>>>>>> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
>>>>>>>>>> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
>>>>>>>>>> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Buffer ioctls:
>>>>>>>>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK (Not Supported)
>>>>>>>>>> test CREATE_BUFS maximum buffers: OK
>>>>>>>>>> test VIDIOC_REMOVE_BUFS: OK
>>>>>>>>>> test VIDIOC_EXPBUF: OK (Not Supported)
>>>>>>>>>> test Requests: OK (Not Supported)
>>>>>>>>>>
>>>>>>>>>> Total for neoisp device /dev/v4l-subdev0: 88, Succeeded: 88, Failed:
>>>>>>>>>> 0, Warnings: 0
>>>>>>>>>>
>>>>>>>>>> Grand Total for neoisp device /dev/media0: 384, Succeeded: 384,
>>>>>>>>>> Failed: 0, Warnings: 0
>>>>>>>>>>
>>>>>>>>>> ---
>>>>>>>>>> Antoine Bouyer (11):
>>>>>>>>>> media: uapi: v4l2-isp: Add v4l2 ISP extensible statistics definitions
>>>>>>>>>> media: v4l2-isp: Add helper function to compute extended stats size
>>>>>>>>>> media: Documentation: uapi: Update V4L2 ISP for extensible stats
>>>>>>>>>> media: Documentation: Add NXP neoisp driver documentation
>>>>>>>>>> dt-bindings: media: Add nxp neoisp support
>>>>>>>>>> media: v4l2-ctrls: Add user control base for NXP neoisp controls
>>>>>>>>>> media: Add meta formats supported by NXP neoisp driver
>>>>>>>>>> media: uapi: Add NXP NEOISP user interface header file
>>>>>>>>>> media: platform: Add NXP Neoisp Image Signal Processor
>>>>>>>>>> media: platform: neoisp: Add debugfs support
>>>>>>>>>> arm64: dts: freescale: imx95: Add NXP neoisp device tree node
>>>>>>>>>>
>>>>>>>>>> .../admin-guide/media/nxp-neoisp-diagram.dot | 22 +
>>>>>>>>>> .../admin-guide/media/nxp-neoisp.dot | 16 +
>>>>>>>>>> .../admin-guide/media/nxp-neoisp.rst | 189 ++
>>>>>>>>>> .../admin-guide/media/v4l-drivers.rst | 1 +
>>>>>>>>>> .../devicetree/bindings/media/nxp,neoisp.yaml | 65 +
>>>>>>>>>> .../userspace-api/media/v4l/meta-formats.rst | 1 +
>>>>>>>>>> .../media/v4l/metafmt-nxp-neoisp.rst | 114 +
>>>>>>>>>> .../userspace-api/media/v4l/v4l2-isp.rst | 42 +-
>>>>>>>>>> MAINTAINERS | 9 +
>>>>>>>>>> .../boot/dts/freescale/imx95-19x19-evk.dts | 4 +
>>>>>>>>>> arch/arm64/boot/dts/freescale/imx95.dtsi | 11 +
>>>>>>>>>> drivers/media/platform/nxp/Kconfig | 1 +
>>>>>>>>>> drivers/media/platform/nxp/Makefile | 1 +
>>>>>>>>>> drivers/media/platform/nxp/neoisp/Kconfig | 15 +
>>>>>>>>>> drivers/media/platform/nxp/neoisp/Makefile | 8 +
>>>>>>>>>> drivers/media/platform/nxp/neoisp/neoisp.h | 270 ++
>>>>>>>>>> .../media/platform/nxp/neoisp/neoisp_ctx.c | 2798 +++++++++++++++++
>>>>>>>>>> .../media/platform/nxp/neoisp/neoisp_ctx.h | 85 +
>>>>>>>>>> .../platform/nxp/neoisp/neoisp_debugfs.c | 503 +++
>>>>>>>>>> .../media/platform/nxp/neoisp/neoisp_fmt.h | 509 +++
>>>>>>>>>> drivers/media/platform/nxp/neoisp/neoisp_hw.h | 577 ++++
>>>>>>>>>> .../media/platform/nxp/neoisp/neoisp_main.c | 1999 ++++++++++++
>>>>>>>>>> .../media/platform/nxp/neoisp/neoisp_nodes.h | 60 +
>>>>>>>>>> .../media/platform/nxp/neoisp/neoisp_regs.h | 2501 +++++++++++++++
>>>>>>>>>> drivers/media/v4l2-core/v4l2-ioctl.c | 4 +
>>>>>>>>>> include/media/v4l2-isp.h | 13 +
>>>>>>>>>> include/uapi/linux/media/nxp/nxp_neoisp.h | 1968 ++++++++++++
>>>>>>>>>> include/uapi/linux/media/v4l2-isp.h | 85 +
>>>>>>>>>> include/uapi/linux/v4l2-controls.h | 6 +
>>>>>>>>>> include/uapi/linux/videodev2.h | 6 +
>>>>>>>>>> 30 files changed, 11880 insertions(+), 3 deletions(-)
>>>>>>>>>> create mode 100644 Documentation/admin-guide/media/nxp-neoisp-
>>>>>>>>>> diagram.dot
>>>>>>>>>> create mode 100644 Documentation/admin-guide/media/nxp-neoisp.dot
>>>>>>>>>> create mode 100644 Documentation/admin-guide/media/nxp-neoisp.rst
>>>>>>>>>> create mode 100644 Documentation/devicetree/bindings/media/
>>>>>>>>>> nxp,neoisp.yaml
>>>>>>>>>> create mode 100644 Documentation/userspace-api/media/v4l/metafmt-
>>>>>>>>>> nxp-neoisp.rst
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/Kconfig
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/Makefile
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp.h
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_ctx.c
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_ctx.h
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_debugfs.c
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_fmt.h
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_hw.h
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_main.c
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_nodes.h
>>>>>>>>>> create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_regs.h
>>>>>>>>>> create mode 100644 include/uapi/linux/media/nxp/nxp_neoisp.h
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [RFC v1 00/11] Add iMX95 neoisp driver
2026-03-24 17:44 ` Antoine Bouyer
@ 2026-03-25 13:23 ` Jacopo Mondi
0 siblings, 0 replies; 14+ messages in thread
From: Jacopo Mondi @ 2026-03-25 13:23 UTC (permalink / raw)
To: Antoine Bouyer
Cc: Jacopo Mondi, Michael Riesch, julien.vuillaumier, alexi.birlinger,
daniel.baluta, peng.fan, frank.li, laurent.pinchart, mchehab,
robh, krzk+dt, conor+dt, shawnguo, s.hauer, kernel, festevam,
linux-kernel, linux-media, devicetree, linux-arm-kernel,
niklas soderlund, Anthony McGivern
Hi Antoine
On Tue, Mar 24, 2026 at 06:44:50PM +0100, Antoine Bouyer wrote:
>
> Hi Jacopo
>
> On 3/23/26 2:18 PM, Jacopo Mondi wrote:
> >
> >
> > Hi Antoine
> >
> > On Fri, Mar 20, 2026 at 05:29:44PM +0100, Antoine Bouyer wrote:
> > > Hi Jacopo
> > >
> > > Quite some updates regarding this RFC after further analysis.
> > >
> > > Le 05/02/2026 à 10:40, Jacopo Mondi a écrit :
> > > >
> > > >
> > > > Hi Antoine
> > > >
> > > > On Wed, Feb 04, 2026 at 07:30:18PM +0100, Antoine Bouyer wrote:
> > > > > Hi Jacopo
> > > > >
> > > > > Le 04/02/2026 à 18:12, Jacopo Mondi a écrit :
> > > > > >
> > > > > > Hello,
> > > > > >
> > > > > > On Tue, Feb 03, 2026 at 07:37:34PM +0100, Jacopo Mondi wrote:
> > > > > > > Hello
> > > > > > >
> > > > > > > On Thu, Jan 29, 2026 at 12:00:24AM +0100, Michael Riesch wrote:
> > > > > > > > Hi Antoine,
> > > > > > > >
> > > > > > > > Thanks for your response.
> > > > > > > >
> > > > > > > > On 1/28/26 09:17, Antoine Bouyer wrote:
> > > > > > > > > Hi Michael
> > > > > > > > >
> > > > > > > > > On 1/26/26 10:44 AM, Michael Riesch wrote:
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > Hi Antoine,
> > > > > > > > > >
> > > > > > > > > > On 1/23/26 09:09, Antoine Bouyer wrote:
> > > > > > > > > > > Hi all,
> > > > > > > > > > >
> > > > > > > > > > > This RFC patch series introduces the NXP Neo Image Signal Processor
> > > > > > > > > > > (ISP)
> > > > > > > > > > > driver, used in the NXP i.MX95 SoC and future devices in the i.MX9
> > > > > > > > > > > family.
> > > > > > > > > > > The series also includes updates to the generic v4l2-isp interface to
> > > > > > > > > > > support extended statistics required by the Neo ISP.
> > > > > > > > > > >
> > > > > > > > > > > The Neo ISP processes one or more camera streams, converting RAW formats
> > > > > > > > > > > into YUV or RGB outputs. Its architecture is largely influenced by the
> > > > > > > > > > > PISP driver. The hardware supports up to eight contexts, with three sink
> > > > > > > > > > > pads (main input, HDR input, and parameter buffers) and three source
> > > > > > > > > > > pads
> > > > > > > > > > > (RGB output, IR output, and statistics metadata).
> > > > > > > > > > >
> > > > > > > > > > > At this stage, both legacy (fixed-size) and extensible (dynamic-size)
> > > > > > > > > > > parameter/statistics buffers are supported through the generic v4l2-isp
> > > > > > > > > > > framework, similar to rkisp1 and Mali-C55. The driver currently supports
> > > > > > > > > > > M2M operation; direct CSI-to-ISP streaming is not yet implemented.
> > > > > > > > > >
> > > > > > > > > > How do you envisage the direct CSI-to-ISP streaming shall be supported?
> > > > > > > > >
> > > > > > > > > At this stage, this streaming mode still needs to be evaluated on
> > > > > > > > > neoisp. We should follow the integration model used by existing ISP
> > > > > > > > > drivers to avoid duplicating solutions.
> > > > > > > >
> > > > > > > > Fair point, but I have had the impression that there are not many
> > > > > > > > examples (if any). The rkisp1 driver, for instance, only supports inline
> > > > > > > > mode although the HW should be able to do both.
> > > > > > > >
> > > > > > > > But any pointers most welcome, I won't claim I have the full overview.
> > > > > > > >
> > > > > > > > >
> > > > > > > > > Below are my initial thoughts on the specific points you raised:
> > > > > > > > >
> > > > > > > > > > - How shall the final media graph(s) look like?
> > > > > > > > >
> > > > > > > > > The media entities would remain mostly identical, except for the absence
> > > > > > > > > of ISI. The topology would be a direct linkg from sensor->csi-
> > > > > > > > > > formatter->neoisp.
> > > > > > >
> > > > > > > If support for inline mode has to be added later, the ISP will need to
> > > > > > > be registered in the same media graph of the CSI-2 receiver to be able
> > > > > > > to link the two, right ?
> > > > >
> > > > > yes correct.
> > > > >
> > > > > > >
> > > > > > > How do you envision to control the ISP operating mode, because I'm
> > > > > > > afraid if you register the ISP in its own media graph, you're locking
> > > > > > > yourself there as implementing inline mode would require a different
> > > > > > > media topology with all the implications on the rest of the userspace
> > > > > > > stack.
> > > > > > >
> > > > > > > This might not be a problem if you know that the inline vs m2m mode is
> > > > > > > SoC sythesis time parameter. Some SoCs will integrate neoisp inline, some
> > > > > > > other as m2m. In this case you'll likely need two pipeline handlers
> > > > > > > in libcamera, but if that's per SoC-line maybe is acceptable. The fact
> > > > > > > you suggests in inline mode there won't be an ISI makes me think this
> > > > > > > actually depends on the SoC design ?
> > > > >
> > > > > Actually, this is not really at SoC synthesis time, neoisp HW does support
> > > > > both modes, that is configurable. But ISP HW can run in a single mode only
> > > >
> > > > > once it is configured. Streaming mode is tightly coupled with CSI HW, then
> > > > > ISP cannot be used in M2M mode with another sensor simultaneously.
> > > > >
> > > >
> > > > Yes, my point is trying to understand "how it is configured" and what
> > > > your expectations are.
> > > >
> > > > Will the board .dts (or a camera .dtso) decide how the ISP is operated
> > > > by defining its endpoint connections ? Assuming with the same SoC both
> > > > inline and m2m modes are possible, without differences in the SoC
> > > > design/integration, will users of the same board have to modify the
> > > > .dts or load ad-hoc .dtso to decide what mode is in use ?
> > > >
> > > > Then, the question of how the media topology will look and which
> > > > components registers what has to be clarified.
> > > >
> > > > Let's try to make a taxonomy of the cases we have in mainline (or on
> > > > their way to mainline).
> > > >
> > > > In the mali example I mentioned, the operating mode is selected by the
> > > > .dtsi as Mali can be integrated either inline or in m2m mode in
> > > > different SoCs. RZ/V2H in example, will always be m2m as it doesn't
> > > > interface the CSI-2 receiver with the ISP but rather interfaces the
> > > > ISP with a companion chip the performs memory access on its behalf
> > > > (the IVC). A different design that incorporates Mali inline will
> > > > instead have to interface the CSI-2 receiver with the ISP with
> > > > internal busses/glue logic and will then have to described this in dts.
> > > >
> > > > This is fine as the ISP integration is different and then having the
> > > > description in dts is legit.
> > > >
> > > > The ISP driver unconditionally registers an async notifier and the
> > > > downstream component (csi-2 or IVC) will register its async subdev(s)
> > > > which will all appear in the ISP media graph. This is possible because
> > > > the assumption is that the CSI-2 receiver (or the companion chip)
> > > > won't register their own media graph.
> > > >
> > > > The Renesas V4H example I mentioned is instead different. The ISP can
> > > > be operated in inline and m2m, on the same SoC without any
> > > > modification to hardware and to the dts/dtsi. It's basically a user
> > > > choice we defer to runtime.
> > > >
> > > > The V4H already has a component that registers a media graph: the
> > > > CSI-2/VIN block which is found in many SoCs of the same (and older)
> > > > generations. The ISP is present only in some SoC, but the CSI-2/VIN is
> > > > always there. In this case, to support both inline and m2m modes, the
> > > > VIN registers the media device and, with the trick I pointed you to in
> > > > Niklas' code, the ISP registers a subdev in the VIN media graph. Then
> > > > the inline/m2m mode can be selected by media link enablement at
> > > > run-time. Now, inline mode is not yet supported on V4H and there might
> > > > be dragons there, but at least, both modes should be possible on the same
> > > > SoC.
> > > >
> > > > On the other extremes we have the RaspberryPi PiSP BE and RkISP1.
> > > >
> > > > RPi knows the only SoC where the PiPS will be found is their one. The
> > > > ISP cannot function inline and will always be m2m. In this case, a
> > > > dedicated media graph for the ISP is the simplest and cleanest
> > > > solution.
> > > >
> > > > RkISP1 instead will always be inline only. It registers a media device
> > > > and an async notifier, the connected CSI-2 receiver will register an
> > > > async subdev and will be connected to the device tree endpoint of the
> > > > ISP device node.
> > > >
> > > > What model is the closest one to the neoisp integration that you
> > > > envision on NXP SoCs ?
> > >
> > > Then the closest model is the V4H one I believe: we both support m2m and
> > > streaming (inline) modes on the same SoC. I tested the trick you pointed
> > > out, and let the formatter sharing the media device (owned by ISI) to the
> > > neo ISP, like renesas csisp does. It registers as expected, thanks for the
> > > proposal !
> > >
> > > I think formatter is a good candidate since it is physically connected to
> > > ISP through a pixel link for streaming mode. Moreover, I propose to create a
> > > dedicated pad b/w formatter and ISP and keep the one b/w formatter and ISI
> > > as it is, so that in future we can configure the stream format which is sent
> > > to ISP, and the one sent to ISI.
> >
> > So, if I look at the ISI media graph you shared earlier in the thread,
> > the formatter will gain one source pad to be optionally connected to
> > the ISP, while the existing one that connectes to the crossbar will
> > stay as it is today ?
>
> Yes exactly. However, I don't plan to push the pad changes on the M2M patch
> series yet. I would rather create the pads (formatter and ISP) together with
> the introduction of the inline mode.
>
As long as introducing the two new pads doesn't change the enumeration
of the other ones I think it's fine. The only requirement is that
userspace that used to work with the m2m-only implementation should
continue working once the media graph is modified to support inline.
> >
> > >
> > > I also tested the streaming path can be added in device tree with endpoint
> > > connections between the nodes, so that ISP can create the media link when it
> > > registers itself to the media device.
> >
> > I think this is fine if there actually is a data path between the
> > formatter and the ISP as you have suggested.
>
> Yes there is a pixel link between formatter and ISP (at least on i.MX95
> SoC).
>
> >
> > >
> > > Thus at runtime, if userspace enables this link, then neo runs in streaming
> > > mode, otherwise m2m is used.
> >
> > So if we have an ISI, the ISP can be operated in m2m or inline based
> > on run-time link enablement, right ?
>
> Yes. And as per my understanding, ISI could still be used with inline-ISP,
> to capture raw frame.
>
> >
> > >
> > > If another SoC in future doesn't support streaming path, the endpoints can
> > > be removed from device tree, the ISP would stay in media graph anyway with
> > > m2m mode only.
> >
> > Nice!
> >
> > Do you envision a streaming mode only design, where there is no ISI
> > and the ISP has to register the media device itself ?
>
> AFAIK, there is no such design, ISI is always there.
Ok, that's good
>
> However, I initially though about adding an ISP "standalone" mode, where ISP
> could register its own media device (as it was done before). That could ease
> standalone test I believe, and limit dependency with other drivers. But I
> don't know how this can cohabit with the phandle registration approach,
> except by adding a new optional property on neoisp node to force standalone
> registration, or a module parameter.
>
> Do you think it's worth adding such standalone mode ? and if yes, how can we
> enable it in a proper way ?
>
I don't think it's something that should be mainlined. If it's useful
for your testing please go ahead, but I'm not sure this can be
mainlined...
> >
> > >
> > > Do you think this is good approach ?
> > >
> >
> > Certainly so! Thanks for the effort!
> >
> > > >
> > > > > >
> > > > > > One small correction after some more research:
> > > > > >
> > > > > > we actually already have a pipeline in libcamera that supports inline
> > > > > > and (will soon) support m2m: the mali c55 one. My take on "probably
> > > > > > need two pipeline handlers" was not correct then.
> > > > >
> > > > > Yes, I saw your patchwork on libcamera about this coming upgrade. Spent some
> > > > > time analyzing it ':) Seems we are quite aligned as per my understanding:
> > > > > inline mode (i.e. streaming mode with neoisp) _or_ M2M mode using IVC video
> > > > > device from Mali. Is that right ?
> > > > >
> > > > > >
> > > > > > As said, Mali-C55 can be integrated inline or in m2m mode and this is
> > > > > > decided based on the device tree endpoint connections.
> > > > >
> > > > > Good. Do you have an example available ?
> > > >
> > > > It's in mainline, but there's nothing exciting there as the assumption
> > > > is that there will always be a connection on the first endpoint and
> > > > the driver simply registers a notifier for the connected async subdev. If
> > > > it's a CSI-2 receiver then we're inline. If it's a companion chip
> > > > we're m2m.
> > > >
> > > > The libcamera pipeline (not upstream yet) inspects the media entity
> > > > function of the entity connected to the ISP sink pad#0. If it's a
> > > > CSI-2 reciver we're inline. If it's not, we're m2m. Based on that it
> > > > operated the pipeline differently.
> > > >
> > > > >
> > > > > >
> > > > > > So, if you know neoisp will be integrated either inline or m2m in
> > > > > > different SoC lines, maybe deferring it to device tree is good enough
> > > > > > at the expense of a slightly more complicated pipeline ?
> > > > >
> > > > > As said, SoC/ISP HW does support both modes. But I think that the selection
> > > > > can be done in device tree too. So that after bootup, a camera will be used
> > > > > only in 1 mode.
> > > > >
> > > > > >
> > > > > > I guess this has implications on the bindings definition as well..
> > > > >
> > > > > Most probably yes. Can this be done as second phase once evaluation is
> > > > > completed ?
> > > > >
> > > >
> > > > I think you should asses from the very beginning what is the planned
> > > > integration model of the ISP in order not to corner yourself in a
> > > > place where it will be hard to support inline without re-writing
> > > > the driver's media device registration logic.
> > > >
> > > > Looking at the below media graph of CSI/ISI you should ask the question "how
> > > > will I register the ISP subdev in the CSI-2 media graph when inline"
> > > > and "how will I describe inline vs m2m mode if the underlying hardware
> > > > design doesn't change?" as deferring it to the .dts might not be the
> > > > most correct way to go in that case ?
> > >
> > > So I think we are aligned now: one media graph from the beginning for
> > > supporting both modes, even if first mainline version only supports m2m.
> > > Would that be ok ?
> > >
> >
> > Yes!
> >
> > Let's only just clarify if there will ever be a mode where there is no
> > ISI as in that case I think we need to clarify who will register the
> > media graph and the async notifiers..
>
> Fine. Let me prepare a patchset with all changes already discussed then. I
> keep standalone mode out for the moment.
Fine with me!
Thanks
j
>
> BR
> Antoine
>
> >
> > > >
> > > > > >
> > > > > > >
> > > > > > > However, if you plan to allow deferring inline/m2m mode selection to
> > > > > > > the system integrators or even have it as a run-time parameter, then
> > > > > > > you should really consider having the ISP in the same media graph as
> > > > > > > the CSI-2 receiver and operate the whole CSI-2/ISI/ISP as a single
> > > > > > > media graph, where you could select the operating mode through media link
> > > > > > > enablement or dts endpoint connections
> > > > > > >
> > > > > > > Niklas (in cc) has addressed a similar situation, where inline and m2m
> > > > > > > mode can be selected by link enablement at runtime here
> > > > > > > https://patchwork.linuxtv.org/project/linux-media/patch/20251225171054.1370856-3-niklas.soderlund+renesas@ragnatech.se/
> > > > > > > (see risp_cs_internal_ops)
> > > > > > >
> > > > > > > >
> > > > > > > > OK, I thought that ISI was still around...
> > > > > > > >
> > > > > > > > >
> > > > > > > > > > - How many media devices are registered and which driver registers it
> > > > > > > > > > or them?
> > > > > > > > >
> > > > > > > > > That will be part of the evaluation. My initial assumption is that
> > > > > > > > > neoisp would be the appropriate component to register the media device
> > > > > > > > > in this mode, since ISI is not involved, and ISI currently performs the
> > > > > > > > > registration in the M2M configuration.
> > > > > > >
> > > > > > > Isn't the ISP registering its own media graph ?
> > > > >
> > > > > Yes, 8 copies of ISP media graph, that can be used with the 8 output video
> > > > > devices of the ISI media graph.
> > > > >
> > > >
> > > > I suggest you do what RPi does. The mainline driver only registers one
> > > > instance and they carry a little patch downstream that implements the
> > > > for() loop where multiple instances are registered. Duplicating media graphs
> > > > is not desirable (at least in mainline) as we can have ISPs with 256
> > > > contexts, we don't want 256 media graphs.
> > >
> > > Ok. Will do same approach then: 1 neoisp instance on mainline + downstream
> > > patch to create other instances (x8), all in same media graph.
> >
> > Thank you. Let's work on a proper solution and then the downstream
> > patch will be dropped!
> >
> > >
> > > >
> > > > A framework level solution with proper priority handling and job
> > > > scheduling is what is required and that's what the context work should
> > > > end up being.>
> > > >
> > > > > > >
> > > > > > > Can we get a copy of all media graphs on an i.MX95 system including
> > > > > > > the ISI and the CSI-2 receiver ?
> > > > >
> > > > > Here is an example with multiple sensors. Or do you need it in another
> > > > > format ?
> > > >
> > > > No it's fine, thanks!
> > > >
> > > > >
> > > > >
> > > > > digraph board {
> > > > > rankdir=TB
> > > > > n00000001 [label="{{<port0> 0 | <port1> 1 | <port2> 2 | <port3> 3 |
> > > > > <port4> 4} | crossbar\n/dev/v4l-subdev8 | {<port5> 5 | <port6> 6 | <port7> 7
> > > > > | <port8> 8 | <port9> 9 | <port10> 10 | <port11> 11 | <port12> 12}}",
> > > > > shape=Mrecord, style=filled, fillcolor=green]
> > > > > n00000001:port5 -> n0000000f:port0 [style=bold]
> > > > > n00000001:port6 -> n0000001a:port0 [style=bold]
> > > > > n00000001:port7 -> n00000025:port0 [style=bold]
> > > > > n00000001:port8 -> n00000030:port0 [style=bold]
> > > > > n00000001:port9 -> n0000003b:port0 [style=bold]
> > > > > n00000001:port10 -> n00000046:port0 [style=bold]
> > > > > n00000001:port11 -> n00000051:port0 [style=bold]
> > > > > n00000001:port12 -> n0000005c:port0 [style=bold]
> > > > > n0000000f [label="{{<port0> 0} | mxc_isi.0\n/dev/v4l-subdev9 |
> > > > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n0000000f:port1 -> n00000012 [style=bold]
> > > > > n00000012 [label="mxc_isi.0.capture\n/dev/video8", shape=box,
> > > > > style=filled, fillcolor=yellow]
> > > > > n0000001a [label="{{<port0> 0} | mxc_isi.1\n/dev/v4l-subdev10 |
> > > > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n0000001a:port1 -> n0000001d [style=bold]
> > > > > n0000001d [label="mxc_isi.1.capture\n/dev/video9", shape=box,
> > > > > style=filled, fillcolor=yellow]
> > > > > n00000025 [label="{{<port0> 0} | mxc_isi.2\n/dev/v4l-subdev11 |
> > > > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n00000025:port1 -> n00000028 [style=bold]
> > > > > n00000028 [label="mxc_isi.2.capture\n/dev/video10", shape=box,
> > > > > style=filled, fillcolor=yellow]
> > > > > n00000030 [label="{{<port0> 0} | mxc_isi.3\n/dev/v4l-subdev12 |
> > > > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n00000030:port1 -> n00000033 [style=bold]
> > > > > n00000033 [label="mxc_isi.3.capture\n/dev/video13", shape=box,
> > > > > style=filled, fillcolor=yellow]
> > > > > n0000003b [label="{{<port0> 0} | mxc_isi.4\n/dev/v4l-subdev13 |
> > > > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n0000003b:port1 -> n0000003e [style=bold]
> > > > > n0000003e [label="mxc_isi.4.capture\n/dev/video14", shape=box,
> > > > > style=filled, fillcolor=yellow]
> > > > > n00000046 [label="{{<port0> 0} | mxc_isi.5\n/dev/v4l-subdev14 |
> > > > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n00000046:port1 -> n00000049 [style=bold]
> > > > > n00000049 [label="mxc_isi.5.capture\n/dev/video21", shape=box,
> > > > > style=filled, fillcolor=yellow]
> > > > > n00000051 [label="{{<port0> 0} | mxc_isi.6\n/dev/v4l-subdev15 |
> > > > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n00000051:port1 -> n00000054 [style=bold]
> > > > > n00000054 [label="mxc_isi.6.capture\n/dev/video22", shape=box,
> > > > > style=filled, fillcolor=yellow]
> > > > > n0000005c [label="{{<port0> 0} | mxc_isi.7\n/dev/v4l-subdev16 |
> > > > > {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n0000005c:port1 -> n0000005f [style=bold]
> > > > > n0000005f [label="mxc_isi.7.capture\n/dev/video23", shape=box,
> > > > > style=filled, fillcolor=yellow]
> > > > > n00000067 [label="mxc_isi.output\n", shape=box, style=filled,
> > > > > fillcolor=yellow]
> > > > > n00000067 -> n00000001:port4 [style=bold]
> > > > > n0000006e [label="{{<port0> 0} |
> > > > > 4ac10000.syscon:formatter@20\n/dev/v4l-subdev17 | {<port1> 1}}",
> > > > > shape=Mrecord, style=filled, fillcolor=green]
> > > > > n0000006e:port1 -> n00000001:port2 [style=bold]
> > > > > n00000073 [label="{{<port0> 0} |
> > > > > csidev-4ad30000.csi\n/dev/v4l-subdev18 | {<port1> 1}}", shape=Mrecord,
> > > > > style=filled, fillcolor=green]
> > > > > n00000073:port1 -> n0000006e:port0 [style=bold]
> > > > > n00000078 [label="{{<port0> 0 | <port1> 1 | <port2> 2 | <port3> 3} |
> > > > > max96724 2-0027\n/dev/v4l-subdev19 | {<port4> 4 | <port5> 5}}",
> > > > > shape=Mrecord, style=filled, fillcolor=green]
> > > > > n00000078:port4 -> n00000073:port0 [style=dashed]
> > > > > n00000081 [label="{{} | mx95mbcam 8-0040\n/dev/v4l-subdev20 |
> > > > > {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n00000081:port0 -> n00000078:port0 [style=bold]
> > > > > n00000085 [label="{{} | mx95mbcam 9-0040\n/dev/v4l-subdev21 |
> > > > > {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n00000085:port0 -> n00000078:port1 [style=bold]
> > > > > n00000089 [label="{{} | mx95mbcam 10-0040\n/dev/v4l-subdev22 |
> > > > > {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n00000089:port0 -> n00000078:port2 [style=bold]
> > > > > n0000008d [label="{{} | mx95mbcam 11-0040\n/dev/v4l-subdev23 |
> > > > > {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
> > > > > n0000008d:port0 -> n00000078:port3 [style=bold]
> > > > > }
> > > > >
> > > > >
> > > > > > >
> > > > > > > If I'm not mistaken you'll have 8 copies of the ISP media graphs, and
> > > > > > > that's exactly what we're working on with the context framework :)
> > > > > > >
> > > > >
> > > > > Ok. Then I should have a look to context framework too ...
> > > > >
> > > >
> > > > Please, I hope to be able to resume working on it sooner or later
> > > > given the right use case.
> > >
> > > Ok. Will continue monitoring the multi context work. Seems to be a nice
> > > feature indeed. But as impact on userspace is more significant, that can be
> > > done as a second step I guess, and will keep the multi instance downstream
> > > patch meanwhile.
> > >
> > > >
> > > > > > >
> > > > > > > >
> > > > > > > > ... since it is not, your assumption seems very reasonable.
> > > > > > > >
> > > > > > > > >
> > > > > > > > > > - How can the user decide whether direct (csi2isp) or indirect
> > > > > > > > > > (mem2mem) streaming shall be used?
> > > > > > > > >
> > > > > > > > > That will also be part of the evaluation. From dts would be my first
> > > > > > > > > option, but may prevent using both modes on same platform then.
> > > > > > > >
> > > > > > > > Of course this depends what the hardware is able to do, but in case the
> > > > > > > > HW is reconfigurable easily, I doubt that device tree is a good choice
> > > > > > > > to solve that.
> > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > While it is certainly OK to introduce this support only at a later
> > > > > > > > > > stage, it makes sense to consider this right from the start to avoid
> > > > > > > > > > some nasty changes e.g. in how this hardware is exposed to user space.
> > > > > > > > > >
> > > > > > > > > > Also, we are facing a similiar challenge with recent Rockchip ISP
> > > > > > > > > > hardware (RK3588, RK3576, ...) and it would be great to hear your
> > > > > > > > > > thoughts about that.
> > > > > > > > >
> > > > > > > > > Is there an existing discussion thread available on this topic? I would
> > > > > > > > > be very interested in following it.
> > > > > > > >
> > > > > > > > Not yet, I am afraid. But there should be one or two soon (TM) :-)
> > > > > > >
> > > > > > > It's probably time to have one :)
> > > > >
> > > > > Good. Please loop me in ;)
> > > >
> > > > You are in, this is the conversation ;)
> > > >
> > > > It might be a good discussion point for the media summit in Nice
> > > > co-located with Embedded Recipes if people with interest in the topic
> > > > will going the be there.
> > >
> > > Great ! Will try to join then.
> > >
> >
> > I'm not sure yet how many interested parties will be in Nice and if it
> > would make sense to organize an "ISP design day" there or should we
> > plan a devroom for Plumbers in Prague ?
> >
> >
> > > BR
> > > Antoine
> > >
> > > >
> > > > I'm also adding Anthony from ARM as I know he's going through the same
> > > > inline/m2m duality you're now facing.
> > > >
> > > > Thanks
> > > > j
> > > >
> > > > >
> > > > > BR
> > > > > Antoine
> > > > >
> > > > > > >
> > > > > > > >
> > > > > > > > Thanks and regards,
> > > > > > > > Michael
> > > > > > > >
> > > > > > > > >
> > > > > > > > > Thanks
> > > > > > > > > Antoine
> > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > Thanks in advance and best regards,
> > > > > > > > > > Michael
> > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > This series is posted as RFC because extending the v4l2-isp interface
> > > > > > > > > > > may
> > > > > > > > > > > overlap with ongoing work. If similar development already exists, I am
> > > > > > > > > > > happy to rebase or adapt the series accordingly. If preferred, the
> > > > > > > > > > > series
> > > > > > > > > > > can also be split into two parts: the v4l2-isp rework and the Neo ISP
> > > > > > > > > > > driver introduction.
> > > > > > > > > > >
> > > > > > > > > > > A few checkpatch warnings in v4l2-ioctl.c remain intentionally to stay
> > > > > > > > > > > consistent with the existing style in that file.
> > > > > > > > > > >
> > > > > > > > > > > Testing was performed on the i.MX95 EVK using the media/next kernel in
> > > > > > > > > > > standalone M2M mode. End-to-end camera-to-ISP capture has been validated
> > > > > > > > > > > using the downstream NXP kernel, as some hardware dependencies are not
> > > > > > > > > > > yet upstreamed.
> > > > > > > > > > >
> > > > > > > > > > > Thanks,
> > > > > > > > > > > Antoine
> > > > > > > > > > >
> > > > > > > > > > > ---
> > > > > > > > > > > Here are v4l2-compliance test results:
> > > > > > > > > > >
> > > > > > > > > > > v4l2-compliance 1.28.1-5233, 64 bits, 64-bit time_t
> > > > > > > > > > > v4l2-compliance SHA: fc15e229d9d3 2024-07-23 19:22:15
> > > > > > > > > > >
> > > > > > > > > > > Compliance test for neoisp device /dev/media0:
> > > > > > > > > > >
> > > > > > > > > > > Media Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Model : neoisp
> > > > > > > > > > > Serial :
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Media version : 6.19.0
> > > > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > > > Driver version : 6.19.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:
> > > > > > > > > > > test MEDIA_IOC_G_TOPOLOGY: OK
> > > > > > > > > > > Entities: 7 Interfaces: 7 Pads: 12 Links: 13
> > > > > > > > > > > test MEDIA_IOC_ENUM_ENTITIES/LINKS: OK
> > > > > > > > > > > test MEDIA_IOC_SETUP_LINK: OK
> > > > > > > > > > >
> > > > > > > > > > > Total for neoisp device /dev/media0: 8, Succeeded: 8, Failed: 0,
> > > > > > > > > > > Warnings: 0
> > > > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > > > Compliance test for neoisp device /dev/video0:
> > > > > > > > > > >
> > > > > > > > > > > Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Card type : neoisp
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > > > Video Capture Multiplanar
> > > > > > > > > > > Video Output Multiplanar
> > > > > > > > > > > Metadata Capture
> > > > > > > > > > > Metadata Output
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Device Capabilities
> > > > > > > > > > > Device Caps : 0x04202000
> > > > > > > > > > > Video Output Multiplanar
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Media Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Model : neoisp
> > > > > > > > > > > Serial :
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Media version : 6.19.0
> > > > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Interface Info:
> > > > > > > > > > > ID : 0x0300000a
> > > > > > > > > > > Type : V4L Video
> > > > > > > > > > > Entity Info:
> > > > > > > > > > > ID : 0x00000008 (8)
> > > > > > > > > > > Name : neoisp-input0
> > > > > > > > > > > Function : V4L2 I/O
> > > > > > > > > > > Pad 0x01000009 : 0: Source
> > > > > > > > > > > Link 0x0200000c: to remote pad 0x1000002 of entity
> > > > > > > > > > > 'neoisp' (Image Signal Processor): Data, Enabled, Immutable
> > > > > > > > > > >
> > > > > > > > > > > Required ioctls:
> > > > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test invalid ioctls: OK
> > > > > > > > > > >
> > > > > > > > > > > Allow for multiple opens:
> > > > > > > > > > > test second /dev/video0 open: OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > > > test for unlimited opens: OK
> > > > > > > > > > >
> > > > > > > > > > > Debug ioctls:
> > > > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Input ioctls:
> > > > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > > > >
> > > > > > > > > > > Output ioctls:
> > > > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > > > >
> > > > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Control ioctls:
> > > > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > > > >
> > > > > > > > > > > Format ioctls:
> > > > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > > > test Cropping: OK
> > > > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > > > test Scaling: OK
> > > > > > > > > > >
> > > > > > > > > > > Codec ioctls:
> > > > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Buffer ioctls:
> > > > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Total for neoisp device /dev/video0: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > > > Warnings: 0
> > > > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > > > Compliance test for neoisp device /dev/video1:
> > > > > > > > > > >
> > > > > > > > > > > Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Card type : neoisp
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > > > Video Capture Multiplanar
> > > > > > > > > > > Video Output Multiplanar
> > > > > > > > > > > Metadata Capture
> > > > > > > > > > > Metadata Output
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Device Capabilities
> > > > > > > > > > > Device Caps : 0x04202000
> > > > > > > > > > > Video Output Multiplanar
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Media Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Model : neoisp
> > > > > > > > > > > Serial :
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Media version : 6.19.0
> > > > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Interface Info:
> > > > > > > > > > > ID : 0x03000010
> > > > > > > > > > > Type : V4L Video
> > > > > > > > > > > Entity Info:
> > > > > > > > > > > ID : 0x0000000e (14)
> > > > > > > > > > > Name : neoisp-input1
> > > > > > > > > > > Function : V4L2 I/O
> > > > > > > > > > > Pad 0x0100000f : 0: Source
> > > > > > > > > > > Link 0x02000012: to remote pad 0x1000003 of entity
> > > > > > > > > > > 'neoisp' (Image Signal Processor): Data
> > > > > > > > > > >
> > > > > > > > > > > Required ioctls:
> > > > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test invalid ioctls: OK
> > > > > > > > > > >
> > > > > > > > > > > Allow for multiple opens:
> > > > > > > > > > > test second /dev/video1 open: OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > > > test for unlimited opens: OK
> > > > > > > > > > >
> > > > > > > > > > > Debug ioctls:
> > > > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Input ioctls:
> > > > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > > > >
> > > > > > > > > > > Output ioctls:
> > > > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > > > >
> > > > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Control ioctls:
> > > > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > > > >
> > > > > > > > > > > Format ioctls:
> > > > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > > > test Cropping: OK
> > > > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > > > test Scaling: OK
> > > > > > > > > > >
> > > > > > > > > > > Codec ioctls:
> > > > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Buffer ioctls:
> > > > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Total for neoisp device /dev/video1: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > > > Warnings: 0
> > > > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > > > Compliance test for neoisp device /dev/video2:
> > > > > > > > > > >
> > > > > > > > > > > Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Card type : neoisp
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > > > Video Capture Multiplanar
> > > > > > > > > > > Video Output Multiplanar
> > > > > > > > > > > Metadata Capture
> > > > > > > > > > > Metadata Output
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Device Capabilities
> > > > > > > > > > > Device Caps : 0x0c200000
> > > > > > > > > > > Metadata Output
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Media Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Model : neoisp
> > > > > > > > > > > Serial :
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Media version : 6.19.0
> > > > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Interface Info:
> > > > > > > > > > > ID : 0x03000016
> > > > > > > > > > > Type : V4L Video
> > > > > > > > > > > Entity Info:
> > > > > > > > > > > ID : 0x00000014 (20)
> > > > > > > > > > > Name : neoisp-params
> > > > > > > > > > > Function : V4L2 I/O
> > > > > > > > > > > Pad 0x01000015 : 0: Source
> > > > > > > > > > > Link 0x02000018: to remote pad 0x1000004 of entity
> > > > > > > > > > > 'neoisp' (Image Signal Processor): Data, Enabled
> > > > > > > > > > >
> > > > > > > > > > > Required ioctls:
> > > > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test invalid ioctls: OK
> > > > > > > > > > >
> > > > > > > > > > > Allow for multiple opens:
> > > > > > > > > > > test second /dev/video2 open: OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > > > test for unlimited opens: OK
> > > > > > > > > > >
> > > > > > > > > > > Debug ioctls:
> > > > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Input ioctls:
> > > > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > > > >
> > > > > > > > > > > Output ioctls:
> > > > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > > > >
> > > > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Control ioctls:
> > > > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > > > >
> > > > > > > > > > > Format ioctls:
> > > > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > > > test Cropping: OK (Not Supported)
> > > > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > > > test Scaling: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Codec ioctls:
> > > > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Buffer ioctls:
> > > > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Total for neoisp device /dev/video2: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > > > Warnings: 0
> > > > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > > > Compliance test for neoisp device /dev/video3:
> > > > > > > > > > >
> > > > > > > > > > > Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Card type : neoisp
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > > > Video Capture Multiplanar
> > > > > > > > > > > Video Output Multiplanar
> > > > > > > > > > > Metadata Capture
> > > > > > > > > > > Metadata Output
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Device Capabilities
> > > > > > > > > > > Device Caps : 0x04201000
> > > > > > > > > > > Video Capture Multiplanar
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Media Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Model : neoisp
> > > > > > > > > > > Serial :
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Media version : 6.19.0
> > > > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Interface Info:
> > > > > > > > > > > ID : 0x0300001c
> > > > > > > > > > > Type : V4L Video
> > > > > > > > > > > Entity Info:
> > > > > > > > > > > ID : 0x0000001a (26)
> > > > > > > > > > > Name : neoisp-frame
> > > > > > > > > > > Function : V4L2 I/O
> > > > > > > > > > > Pad 0x0100001b : 0: Sink
> > > > > > > > > > > Link 0x0200001e: from remote pad 0x1000005 of entity
> > > > > > > > > > > 'neoisp' (Image Signal Processor): Data, Enabled
> > > > > > > > > > >
> > > > > > > > > > > Required ioctls:
> > > > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test invalid ioctls: OK
> > > > > > > > > > >
> > > > > > > > > > > Allow for multiple opens:
> > > > > > > > > > > test second /dev/video3 open: OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > > > test for unlimited opens: OK
> > > > > > > > > > >
> > > > > > > > > > > Debug ioctls:
> > > > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Input ioctls:
> > > > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > > > >
> > > > > > > > > > > Output ioctls:
> > > > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > > > >
> > > > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Control ioctls:
> > > > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > > > >
> > > > > > > > > > > Format ioctls:
> > > > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > > > test Cropping: OK (Not Supported)
> > > > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > > > test Scaling: OK
> > > > > > > > > > >
> > > > > > > > > > > Codec ioctls:
> > > > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Buffer ioctls:
> > > > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Total for neoisp device /dev/video3: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > > > Warnings: 0
> > > > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > > > Compliance test for neoisp device /dev/video4:
> > > > > > > > > > >
> > > > > > > > > > > Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Card type : neoisp
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > > > Video Capture Multiplanar
> > > > > > > > > > > Video Output Multiplanar
> > > > > > > > > > > Metadata Capture
> > > > > > > > > > > Metadata Output
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Device Capabilities
> > > > > > > > > > > Device Caps : 0x04201000
> > > > > > > > > > > Video Capture Multiplanar
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Media Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Model : neoisp
> > > > > > > > > > > Serial :
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Media version : 6.19.0
> > > > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Interface Info:
> > > > > > > > > > > ID : 0x03000022
> > > > > > > > > > > Type : V4L Video
> > > > > > > > > > > Entity Info:
> > > > > > > > > > > ID : 0x00000020 (32)
> > > > > > > > > > > Name : neoisp-ir
> > > > > > > > > > > Function : V4L2 I/O
> > > > > > > > > > > Pad 0x01000021 : 0: Sink
> > > > > > > > > > > Link 0x02000024: from remote pad 0x1000006 of entity
> > > > > > > > > > > 'neoisp' (Image Signal Processor): Data
> > > > > > > > > > >
> > > > > > > > > > > Required ioctls:
> > > > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test invalid ioctls: OK
> > > > > > > > > > >
> > > > > > > > > > > Allow for multiple opens:
> > > > > > > > > > > test second /dev/video4 open: OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > > > test for unlimited opens: OK
> > > > > > > > > > >
> > > > > > > > > > > Debug ioctls:
> > > > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Input ioctls:
> > > > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > > > >
> > > > > > > > > > > Output ioctls:
> > > > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > > > >
> > > > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Control ioctls:
> > > > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > > > >
> > > > > > > > > > > Format ioctls:
> > > > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > > > test Cropping: OK (Not Supported)
> > > > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > > > test Scaling: OK
> > > > > > > > > > >
> > > > > > > > > > > Codec ioctls:
> > > > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Buffer ioctls:
> > > > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Total for neoisp device /dev/video4: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > > > Warnings: 0
> > > > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > > > Compliance test for neoisp device /dev/video5:
> > > > > > > > > > >
> > > > > > > > > > > Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Card type : neoisp
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Capabilities : 0x8ca03000
> > > > > > > > > > > Video Capture Multiplanar
> > > > > > > > > > > Video Output Multiplanar
> > > > > > > > > > > Metadata Capture
> > > > > > > > > > > Metadata Output
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Device Capabilities
> > > > > > > > > > > Device Caps : 0x04a00000
> > > > > > > > > > > Metadata Capture
> > > > > > > > > > > Streaming
> > > > > > > > > > > Extended Pix Format
> > > > > > > > > > > Media Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Model : neoisp
> > > > > > > > > > > Serial :
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Media version : 6.19.0
> > > > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Interface Info:
> > > > > > > > > > > ID : 0x03000028
> > > > > > > > > > > Type : V4L Video
> > > > > > > > > > > Entity Info:
> > > > > > > > > > > ID : 0x00000026 (38)
> > > > > > > > > > > Name : neoisp-stats
> > > > > > > > > > > Function : V4L2 I/O
> > > > > > > > > > > Pad 0x01000027 : 0: Sink
> > > > > > > > > > > Link 0x0200002a: from remote pad 0x1000007 of entity
> > > > > > > > > > > 'neoisp' (Image Signal Processor): Data, Enabled
> > > > > > > > > > >
> > > > > > > > > > > Required ioctls:
> > > > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test invalid ioctls: OK
> > > > > > > > > > >
> > > > > > > > > > > Allow for multiple opens:
> > > > > > > > > > > test second /dev/video5 open: OK
> > > > > > > > > > > test VIDIOC_QUERYCAP: OK
> > > > > > > > > > > test VIDIOC_G/S_PRIORITY: OK
> > > > > > > > > > > test for unlimited opens: OK
> > > > > > > > > > >
> > > > > > > > > > > Debug ioctls:
> > > > > > > > > > > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Input ioctls:
> > > > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > > > >
> > > > > > > > > > > Output ioctls:
> > > > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > > > >
> > > > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Control ioctls:
> > > > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_QUERYCTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_CTRL: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > > > Standard Controls: 0 Private Controls: 0
> > > > > > > > > > >
> > > > > > > > > > > Format ioctls:
> > > > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
> > > > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FMT: OK
> > > > > > > > > > > test VIDIOC_TRY_FMT: OK
> > > > > > > > > > > test VIDIOC_S_FMT: OK
> > > > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > > > test Cropping: OK (Not Supported)
> > > > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > > > test Scaling: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Codec ioctls:
> > > > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Buffer ioctls:
> > > > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
> > > > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > > > test VIDIOC_EXPBUF: OK
> > > > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Total for neoisp device /dev/video5: 48, Succeeded: 48, Failed: 0,
> > > > > > > > > > > Warnings: 0
> > > > > > > > > > > --------------------------------------------------------------------------------
> > > > > > > > > > > Compliance test for neoisp device /dev/v4l-subdev0:
> > > > > > > > > > >
> > > > > > > > > > > Driver Info:
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Capabilities : 0x00000000
> > > > > > > > > > > Client Capabilities: 0x0000000000000002
> > > > > > > > > > > interval-uses-which Media Driver Info:
> > > > > > > > > > > Driver name : neoisp
> > > > > > > > > > > Model : neoisp
> > > > > > > > > > > Serial :
> > > > > > > > > > > Bus info : platform:4ae00000.isp
> > > > > > > > > > > Media version : 6.19.0
> > > > > > > > > > > Hardware revision: 0x00000002 (2)
> > > > > > > > > > > Driver version : 6.19.0
> > > > > > > > > > > Interface Info:
> > > > > > > > > > > ID : 0x0300002c
> > > > > > > > > > > Type : V4L Sub-Device
> > > > > > > > > > > Entity Info:
> > > > > > > > > > > ID : 0x00000001 (1)
> > > > > > > > > > > Name : neoisp
> > > > > > > > > > > Function : Image Signal Processor
> > > > > > > > > > > Pad 0x01000002 : 0: Sink
> > > > > > > > > > > Link 0x0200000c: from remote pad 0x1000009 of entity
> > > > > > > > > > > 'neoisp-input0' (V4L2 I/O): Data, Enabled, Immutable
> > > > > > > > > > > Pad 0x01000003 : 1: Sink
> > > > > > > > > > > Link 0x02000012: from remote pad 0x100000f of entity
> > > > > > > > > > > 'neoisp-input1' (V4L2 I/O): Data
> > > > > > > > > > > Pad 0x01000004 : 2: Sink
> > > > > > > > > > > Link 0x02000018: from remote pad 0x1000015 of entity
> > > > > > > > > > > 'neoisp-params' (V4L2 I/O): Data, Enabled
> > > > > > > > > > > Pad 0x01000005 : 3: Source
> > > > > > > > > > > Link 0x0200001e: to remote pad 0x100001b of entity 'neoisp-
> > > > > > > > > > > frame' (V4L2 I/O): Data, Enabled
> > > > > > > > > > > Pad 0x01000006 : 4: Source
> > > > > > > > > > > Link 0x02000024: to remote pad 0x1000021 of entity 'neoisp-
> > > > > > > > > > > ir' (V4L2 I/O): Data
> > > > > > > > > > > Pad 0x01000007 : 5: Source
> > > > > > > > > > > Link 0x0200002a: to remote pad 0x1000027 of entity 'neoisp-
> > > > > > > > > > > stats' (V4L2 I/O): Data, Enabled
> > > > > > > > > > >
> > > > > > > > > > > Required ioctls:
> > > > > > > > > > > test MC information (see 'Media Driver Info' above): OK
> > > > > > > > > > > test VIDIOC_SUDBEV_QUERYCAP: OK
> > > > > > > > > > > test invalid ioctls: OK
> > > > > > > > > > >
> > > > > > > > > > > Allow for multiple opens:
> > > > > > > > > > > test second /dev/v4l-subdev0 open: OK
> > > > > > > > > > > test VIDIOC_SUBDEV_QUERYCAP: OK
> > > > > > > > > > > test for unlimited opens: OK
> > > > > > > > > > >
> > > > > > > > > > > Debug ioctls:
> > > > > > > > > > > test VIDIOC_LOG_STATUS: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Input ioctls:
> > > > > > > > > > > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDIO: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDIO: OK (Not Supported)
> > > > > > > > > > > Inputs: 0 Audio Inputs: 0 Tuners: 0
> > > > > > > > > > >
> > > > > > > > > > > Output ioctls:
> > > > > > > > > > > test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> > > > > > > > > > > Outputs: 0 Audio Outputs: 0 Modulators: 0
> > > > > > > > > > >
> > > > > > > > > > > Input/Output configuration ioctls:
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G/S_EDID: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Sub-Device ioctls (Sink Pad 0):
> > > > > > > > > > > Try Stream 0
> > > > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > Active Stream 0
> > > > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Sub-Device ioctls (Sink Pad 1):
> > > > > > > > > > > Try Stream 0
> > > > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > Active Stream 0
> > > > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Sub-Device ioctls (Sink Pad 2):
> > > > > > > > > > > Try Stream 0
> > > > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > Active Stream 0
> > > > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Sub-Device ioctls (Source Pad 3):
> > > > > > > > > > > Try Stream 0
> > > > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > Active Stream 0
> > > > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Sub-Device ioctls (Source Pad 4):
> > > > > > > > > > > Try Stream 0
> > > > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > Active Stream 0
> > > > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Sub-Device ioctls (Source Pad 5):
> > > > > > > > > > > Try Stream 0
> > > > > > > > > > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > Active Stream 0
> > > > > > > > > > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/
> > > > > > > > > > > FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> > > > > > > > > > > test Active VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Control ioctls:
> > > > > > > > > > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
> > > > > > > > > > > test VIDIOC_QUERYCTRL: OK
> > > > > > > > > > > test VIDIOC_G/S_CTRL: OK
> > > > > > > > > > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK
> > > > > > > > > > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
> > > > > > > > > > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> > > > > > > > > > > Standard Controls: 1 Private Controls: 1
> > > > > > > > > > >
> > > > > > > > > > > Format ioctls:
> > > > > > > > > > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not
> > > > > > > > > > > Supported)
> > > > > > > > > > > test VIDIOC_G/S_PARM: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FBUF: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_FMT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_TRY_FMT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_S_FMT: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> > > > > > > > > > > test Cropping: OK (Not Supported)
> > > > > > > > > > > test Composing: OK (Not Supported)
> > > > > > > > > > > test Scaling: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Codec ioctls:
> > > > > > > > > > > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> > > > > > > > > > > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Buffer ioctls:
> > > > > > > > > > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK (Not Supported)
> > > > > > > > > > > test CREATE_BUFS maximum buffers: OK
> > > > > > > > > > > test VIDIOC_REMOVE_BUFS: OK
> > > > > > > > > > > test VIDIOC_EXPBUF: OK (Not Supported)
> > > > > > > > > > > test Requests: OK (Not Supported)
> > > > > > > > > > >
> > > > > > > > > > > Total for neoisp device /dev/v4l-subdev0: 88, Succeeded: 88, Failed:
> > > > > > > > > > > 0, Warnings: 0
> > > > > > > > > > >
> > > > > > > > > > > Grand Total for neoisp device /dev/media0: 384, Succeeded: 384,
> > > > > > > > > > > Failed: 0, Warnings: 0
> > > > > > > > > > >
> > > > > > > > > > > ---
> > > > > > > > > > > Antoine Bouyer (11):
> > > > > > > > > > > media: uapi: v4l2-isp: Add v4l2 ISP extensible statistics definitions
> > > > > > > > > > > media: v4l2-isp: Add helper function to compute extended stats size
> > > > > > > > > > > media: Documentation: uapi: Update V4L2 ISP for extensible stats
> > > > > > > > > > > media: Documentation: Add NXP neoisp driver documentation
> > > > > > > > > > > dt-bindings: media: Add nxp neoisp support
> > > > > > > > > > > media: v4l2-ctrls: Add user control base for NXP neoisp controls
> > > > > > > > > > > media: Add meta formats supported by NXP neoisp driver
> > > > > > > > > > > media: uapi: Add NXP NEOISP user interface header file
> > > > > > > > > > > media: platform: Add NXP Neoisp Image Signal Processor
> > > > > > > > > > > media: platform: neoisp: Add debugfs support
> > > > > > > > > > > arm64: dts: freescale: imx95: Add NXP neoisp device tree node
> > > > > > > > > > >
> > > > > > > > > > > .../admin-guide/media/nxp-neoisp-diagram.dot | 22 +
> > > > > > > > > > > .../admin-guide/media/nxp-neoisp.dot | 16 +
> > > > > > > > > > > .../admin-guide/media/nxp-neoisp.rst | 189 ++
> > > > > > > > > > > .../admin-guide/media/v4l-drivers.rst | 1 +
> > > > > > > > > > > .../devicetree/bindings/media/nxp,neoisp.yaml | 65 +
> > > > > > > > > > > .../userspace-api/media/v4l/meta-formats.rst | 1 +
> > > > > > > > > > > .../media/v4l/metafmt-nxp-neoisp.rst | 114 +
> > > > > > > > > > > .../userspace-api/media/v4l/v4l2-isp.rst | 42 +-
> > > > > > > > > > > MAINTAINERS | 9 +
> > > > > > > > > > > .../boot/dts/freescale/imx95-19x19-evk.dts | 4 +
> > > > > > > > > > > arch/arm64/boot/dts/freescale/imx95.dtsi | 11 +
> > > > > > > > > > > drivers/media/platform/nxp/Kconfig | 1 +
> > > > > > > > > > > drivers/media/platform/nxp/Makefile | 1 +
> > > > > > > > > > > drivers/media/platform/nxp/neoisp/Kconfig | 15 +
> > > > > > > > > > > drivers/media/platform/nxp/neoisp/Makefile | 8 +
> > > > > > > > > > > drivers/media/platform/nxp/neoisp/neoisp.h | 270 ++
> > > > > > > > > > > .../media/platform/nxp/neoisp/neoisp_ctx.c | 2798 +++++++++++++++++
> > > > > > > > > > > .../media/platform/nxp/neoisp/neoisp_ctx.h | 85 +
> > > > > > > > > > > .../platform/nxp/neoisp/neoisp_debugfs.c | 503 +++
> > > > > > > > > > > .../media/platform/nxp/neoisp/neoisp_fmt.h | 509 +++
> > > > > > > > > > > drivers/media/platform/nxp/neoisp/neoisp_hw.h | 577 ++++
> > > > > > > > > > > .../media/platform/nxp/neoisp/neoisp_main.c | 1999 ++++++++++++
> > > > > > > > > > > .../media/platform/nxp/neoisp/neoisp_nodes.h | 60 +
> > > > > > > > > > > .../media/platform/nxp/neoisp/neoisp_regs.h | 2501 +++++++++++++++
> > > > > > > > > > > drivers/media/v4l2-core/v4l2-ioctl.c | 4 +
> > > > > > > > > > > include/media/v4l2-isp.h | 13 +
> > > > > > > > > > > include/uapi/linux/media/nxp/nxp_neoisp.h | 1968 ++++++++++++
> > > > > > > > > > > include/uapi/linux/media/v4l2-isp.h | 85 +
> > > > > > > > > > > include/uapi/linux/v4l2-controls.h | 6 +
> > > > > > > > > > > include/uapi/linux/videodev2.h | 6 +
> > > > > > > > > > > 30 files changed, 11880 insertions(+), 3 deletions(-)
> > > > > > > > > > > create mode 100644 Documentation/admin-guide/media/nxp-neoisp-
> > > > > > > > > > > diagram.dot
> > > > > > > > > > > create mode 100644 Documentation/admin-guide/media/nxp-neoisp.dot
> > > > > > > > > > > create mode 100644 Documentation/admin-guide/media/nxp-neoisp.rst
> > > > > > > > > > > create mode 100644 Documentation/devicetree/bindings/media/
> > > > > > > > > > > nxp,neoisp.yaml
> > > > > > > > > > > create mode 100644 Documentation/userspace-api/media/v4l/metafmt-
> > > > > > > > > > > nxp-neoisp.rst
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/Kconfig
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/Makefile
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp.h
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_ctx.c
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_ctx.h
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_debugfs.c
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_fmt.h
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_hw.h
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_main.c
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_nodes.h
> > > > > > > > > > > create mode 100644 drivers/media/platform/nxp/neoisp/neoisp_regs.h
> > > > > > > > > > > create mode 100644 include/uapi/linux/media/nxp/nxp_neoisp.h
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > >
> > >
>
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [RFC v1 01/11] media: uapi: v4l2-isp: Add v4l2 ISP extensible statistics definitions
[not found] ` <20260123080938.3367348-2-antoine.bouyer@nxp.com>
[not found] ` <aYIb8ZIZDfCJZEZ9@zed>
@ 2026-04-03 8:19 ` Jacopo Mondi
2026-04-07 7:37 ` Antoine Bouyer
1 sibling, 1 reply; 14+ messages in thread
From: Jacopo Mondi @ 2026-04-03 8:19 UTC (permalink / raw)
To: Antoine Bouyer
Cc: julien.vuillaumier, alexi.birlinger, daniel.baluta, peng.fan,
frank.li, jacopo.mondi, laurent.pinchart, mchehab, robh, krzk+dt,
conor+dt, shawnguo, s.hauer, kernel, festevam, linux-kernel,
linux-media, devicetree, linux-arm-kernel, Jai Luthra, paul elder
Hello Antoine
in cc Jai and Paul
Jai and Paul are working on upstreaming new ISP formats which would
benefit from usage of extensible stats.
No pressure of course, just wanted to check how things are progressing
on your side. Do you have an updated version of this patch which can
be taken in ? Should we sync and work on an updated version ?
Thanks!
j
On Fri, Jan 23, 2026 at 09:09:28AM +0100, Antoine Bouyer wrote:
> Extend the v4l2-isp extensible format introduced for isp parameters buffer
> to the statistics buffer as well.
>
> Like for ISP configuration purpose, that will help supporting various ISP
> hardware versions reporting different statistics data with less impact on
> userspace.
>
> The `v4l2_isp_stats_buffer` reuses the `v4l2_isp_params_buffer` container
> definitions, with similar header, versions and flags. V0 and V1 versions
> are provided to match with params versions. On the other side, ENABLE and
> DISABLE flags are not really meaningfull for statistics purpose. So VALID
> and INVALID flags are introduced. Purpose is to force ISP driver to
> validate a statistics buffer, before it is consumed by userspace.
>
> Signed-off-by: Antoine Bouyer <antoine.bouyer@nxp.com>
> ---
> include/uapi/linux/media/v4l2-isp.h | 85 +++++++++++++++++++++++++++++
> 1 file changed, 85 insertions(+)
>
> diff --git a/include/uapi/linux/media/v4l2-isp.h b/include/uapi/linux/media/v4l2-isp.h
> index 779168f9058e..ed1279b86694 100644
> --- a/include/uapi/linux/media/v4l2-isp.h
> +++ b/include/uapi/linux/media/v4l2-isp.h
> @@ -99,4 +99,89 @@ struct v4l2_isp_params_buffer {
> __u8 data[] __counted_by(data_size);
> };
>
> +/**
> + * enum v4l2_isp_stats_version - V4L2 ISP statistics versioning
> + *
> + * @V4L2_ISP_STATS_VERSION_V0: First version of the V4L2 ISP statistics format
> + * (for compatibility)
> + * @V4L2_ISP_STATS_VERSION_V1: First version of the V4L2 ISP statistics format
> + *
> + * V0 and V1 are identical, and comply with V4l2 ISP parameters versions. So
> + * both V0 and V1 refers to the first version of the V4L2 ISP statistics
> + * format.
> + *
> + * Future revisions of the V4L2 ISP statistics format should start from the
> + * value of 2.
> + */
> +enum v4l2_isp_stats_version {
> + V4L2_ISP_STATS_VERSION_V0 = 0,
> + V4L2_ISP_STATS_VERSION_V1,
> +};
> +
> +#define V4L2_ISP_PARAMS_FL_BLOCK_VALID (1U << 0)
> +#define V4L2_ISP_PARAMS_FL_BLOCK_INVALID (1U << 1)
> +
> +/*
> + * Reserve the first 8 bits for V4L2_ISP_STATS_FL_* flag.
> + *
> + * Driver-specific flags should be defined as:
> + * #define DRIVER_SPECIFIC_FLAG0 ((1U << V4L2_ISP_STATS_FL_DRIVER_FLAGS(0))
> + * #define DRIVER_SPECIFIC_FLAG1 ((1U << V4L2_ISP_STATS_FL_DRIVER_FLAGS(1))
> + */
> +#define V4L2_ISP_STATS_FL_DRIVER_FLAGS(n) ((n) + 8)
> +
> +/**
> + * struct v4l2_isp_stats_block_header - V4L2 extensible statistics block header
> + * @type: The statistics block type (driver-specific)
> + * @flags: A bitmask of block flags (driver-specific)
> + * @size: Size (in bytes) of the statistics block, including this header
> + *
> + * This structure represents the common part of all the ISP statistics blocks.
> + * Each statistics block shall embed an instance of this structure type as its
> + * first member, followed by the block-specific statistics data.
> + *
> + * The @type field is an ISP driver-specific value that identifies the block
> + * type. The @size field specifies the size of the parameters block.
> + *
> + * The @flags field is a bitmask of per-block flags V4L2_STATS_ISP_FL_* and
> + * driver-specific flags specified by the driver header.
> + */
> +struct v4l2_isp_stats_block_header {
> + __u16 type;
> + __u16 flags;
> + __u32 size;
> +} __attribute__((aligned(8)));
> +
> +/**
> + * struct v4l2_isp_stats_buffer - V4L2 extensible statistics data
> + * @version: The statistics buffer version (driver-specific)
> + * @data_size: The statistics data effective size, excluding this header
> + * @data: The statistics data
> + *
> + * This structure contains the statistics information of the ISP hardware,
> + * serialized for userspace into a data buffer. Each statistics block is
> + * represented by a block-specific structure which contains a
> + * :c:type:`v4l2_isp_stats_block_header` entry as first member. Driver
> + * populates the @data buffer with statistics information of the ISP blocks it
> + * intends to share to userspace. As a consequence, the data buffer effective
> + * size changes according to the number of ISP blocks that driver intends to
> + * provide and is set by the driver in the @data_size field.
> + *
> + * The statistics buffer is versioned by the @version field to allow modifying
> + * and extending its definition. Driver shall populate the @version field to
> + * inform the userpsace about the version it intends to use. The userspace will
> + * parse and handle the @data buffer according to the data layout specific to
> + * the indicated version.
> + *
> + * For each ISP block that driver wants to report, a block-specific structure
> + * is appended to the @data buffer, one after the other without gaps in
> + * between. Driver shall populate the @data_size field with the effective
> + * size, in bytes, of the @data buffer.
> + */
> +struct v4l2_isp_stats_buffer {
> + __u32 version;
> + __u32 data_size;
> + __u8 data[] __counted_by(data_size);
> +};
> +
> #endif /* _UAPI_V4L2_ISP_H_ */
> --
> 2.52.0
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [RFC v1 01/11] media: uapi: v4l2-isp: Add v4l2 ISP extensible statistics definitions
2026-04-03 8:19 ` Jacopo Mondi
@ 2026-04-07 7:37 ` Antoine Bouyer
0 siblings, 0 replies; 14+ messages in thread
From: Antoine Bouyer @ 2026-04-07 7:37 UTC (permalink / raw)
To: Jacopo Mondi
Cc: julien.vuillaumier, alexi.birlinger, daniel.baluta, peng.fan,
frank.li, laurent.pinchart, mchehab, robh, krzk+dt, conor+dt,
shawnguo, s.hauer, kernel, festevam, linux-kernel, linux-media,
devicetree, linux-arm-kernel, Jai Luthra, paul elder
Hi Jacopo
On 4/3/26 10:19 AM, Jacopo Mondi wrote:
>
>
> Hello Antoine
>
> in cc Jai and Paul
>
> Jai and Paul are working on upstreaming new ISP formats which would
> benefit from usage of extensible stats.
>
> No pressure of course, just wanted to check how things are progressing
> on your side. Do you have an updated version of this patch which can
> be taken in ? Should we sync and work on an updated version ?
I'm still on it. Things are progressing well, but little bit delayed
because of neoisp rework. I hope to submit patchset (v4l2-isp + neo) by
end of this week.
BR
Antoine
>
> Thanks!
> j
>
> On Fri, Jan 23, 2026 at 09:09:28AM +0100, Antoine Bouyer wrote:
>> Extend the v4l2-isp extensible format introduced for isp parameters buffer
>> to the statistics buffer as well.
>>
>> Like for ISP configuration purpose, that will help supporting various ISP
>> hardware versions reporting different statistics data with less impact on
>> userspace.
>>
>> The `v4l2_isp_stats_buffer` reuses the `v4l2_isp_params_buffer` container
>> definitions, with similar header, versions and flags. V0 and V1 versions
>> are provided to match with params versions. On the other side, ENABLE and
>> DISABLE flags are not really meaningfull for statistics purpose. So VALID
>> and INVALID flags are introduced. Purpose is to force ISP driver to
>> validate a statistics buffer, before it is consumed by userspace.
>>
>> Signed-off-by: Antoine Bouyer <antoine.bouyer@nxp.com>
>> ---
>> include/uapi/linux/media/v4l2-isp.h | 85 +++++++++++++++++++++++++++++
>> 1 file changed, 85 insertions(+)
>>
>> diff --git a/include/uapi/linux/media/v4l2-isp.h b/include/uapi/linux/media/v4l2-isp.h
>> index 779168f9058e..ed1279b86694 100644
>> --- a/include/uapi/linux/media/v4l2-isp.h
>> +++ b/include/uapi/linux/media/v4l2-isp.h
>> @@ -99,4 +99,89 @@ struct v4l2_isp_params_buffer {
>> __u8 data[] __counted_by(data_size);
>> };
>>
>> +/**
>> + * enum v4l2_isp_stats_version - V4L2 ISP statistics versioning
>> + *
>> + * @V4L2_ISP_STATS_VERSION_V0: First version of the V4L2 ISP statistics format
>> + * (for compatibility)
>> + * @V4L2_ISP_STATS_VERSION_V1: First version of the V4L2 ISP statistics format
>> + *
>> + * V0 and V1 are identical, and comply with V4l2 ISP parameters versions. So
>> + * both V0 and V1 refers to the first version of the V4L2 ISP statistics
>> + * format.
>> + *
>> + * Future revisions of the V4L2 ISP statistics format should start from the
>> + * value of 2.
>> + */
>> +enum v4l2_isp_stats_version {
>> + V4L2_ISP_STATS_VERSION_V0 = 0,
>> + V4L2_ISP_STATS_VERSION_V1,
>> +};
>> +
>> +#define V4L2_ISP_PARAMS_FL_BLOCK_VALID (1U << 0)
>> +#define V4L2_ISP_PARAMS_FL_BLOCK_INVALID (1U << 1)
>> +
>> +/*
>> + * Reserve the first 8 bits for V4L2_ISP_STATS_FL_* flag.
>> + *
>> + * Driver-specific flags should be defined as:
>> + * #define DRIVER_SPECIFIC_FLAG0 ((1U << V4L2_ISP_STATS_FL_DRIVER_FLAGS(0))
>> + * #define DRIVER_SPECIFIC_FLAG1 ((1U << V4L2_ISP_STATS_FL_DRIVER_FLAGS(1))
>> + */
>> +#define V4L2_ISP_STATS_FL_DRIVER_FLAGS(n) ((n) + 8)
>> +
>> +/**
>> + * struct v4l2_isp_stats_block_header - V4L2 extensible statistics block header
>> + * @type: The statistics block type (driver-specific)
>> + * @flags: A bitmask of block flags (driver-specific)
>> + * @size: Size (in bytes) of the statistics block, including this header
>> + *
>> + * This structure represents the common part of all the ISP statistics blocks.
>> + * Each statistics block shall embed an instance of this structure type as its
>> + * first member, followed by the block-specific statistics data.
>> + *
>> + * The @type field is an ISP driver-specific value that identifies the block
>> + * type. The @size field specifies the size of the parameters block.
>> + *
>> + * The @flags field is a bitmask of per-block flags V4L2_STATS_ISP_FL_* and
>> + * driver-specific flags specified by the driver header.
>> + */
>> +struct v4l2_isp_stats_block_header {
>> + __u16 type;
>> + __u16 flags;
>> + __u32 size;
>> +} __attribute__((aligned(8)));
>> +
>> +/**
>> + * struct v4l2_isp_stats_buffer - V4L2 extensible statistics data
>> + * @version: The statistics buffer version (driver-specific)
>> + * @data_size: The statistics data effective size, excluding this header
>> + * @data: The statistics data
>> + *
>> + * This structure contains the statistics information of the ISP hardware,
>> + * serialized for userspace into a data buffer. Each statistics block is
>> + * represented by a block-specific structure which contains a
>> + * :c:type:`v4l2_isp_stats_block_header` entry as first member. Driver
>> + * populates the @data buffer with statistics information of the ISP blocks it
>> + * intends to share to userspace. As a consequence, the data buffer effective
>> + * size changes according to the number of ISP blocks that driver intends to
>> + * provide and is set by the driver in the @data_size field.
>> + *
>> + * The statistics buffer is versioned by the @version field to allow modifying
>> + * and extending its definition. Driver shall populate the @version field to
>> + * inform the userpsace about the version it intends to use. The userspace will
>> + * parse and handle the @data buffer according to the data layout specific to
>> + * the indicated version.
>> + *
>> + * For each ISP block that driver wants to report, a block-specific structure
>> + * is appended to the @data buffer, one after the other without gaps in
>> + * between. Driver shall populate the @data_size field with the effective
>> + * size, in bytes, of the @data buffer.
>> + */
>> +struct v4l2_isp_stats_buffer {
>> + __u32 version;
>> + __u32 data_size;
>> + __u8 data[] __counted_by(data_size);
>> +};
>> +
>> #endif /* _UAPI_V4L2_ISP_H_ */
>> --
>> 2.52.0
>>
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2026-04-07 7:37 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20260123080938.3367348-1-antoine.bouyer@nxp.com>
[not found] ` <20260123080938.3367348-6-antoine.bouyer@nxp.com>
[not found] ` <f6d4c62f-cf7f-44ef-86f8-ca496e7c8a7b@kernel.org>
2026-02-16 13:16 ` Re: [RFC v1 05/11] dt-bindings: media: Add nxp neoisp support Antoine Bouyer
2026-02-16 13:38 ` Krzysztof Kozlowski
[not found] ` <544a98f3-d451-4ca1-b7d0-0b0a1238f66a@collabora.com>
[not found] ` <c8536c80-2f58-4eae-9336-436d772206df@nxp.com>
[not found] ` <22b3916a-a12f-4ea2-8863-8ebd9cb498b0@collabora.com>
[not found] ` <aYI0CrKLGeiZMlD8@zed>
[not found] ` <aYN8v3UGFKfzkl4_@zed>
[not found] ` <86109309-8200-464a-a167-ae9cef3f41b7@nxp.com>
[not found] ` <aYRSMXHjFC0M_DM_@zed>
2026-02-23 12:38 ` [RFC v1 00/11] Add iMX95 neoisp driver Julien Vuillaumier
2026-02-23 16:52 ` Jacopo Mondi
2026-02-24 19:01 ` Julien Vuillaumier
2026-02-25 8:44 ` Jacopo Mondi
2026-03-20 16:29 ` Antoine Bouyer
2026-03-23 13:18 ` Jacopo Mondi
2026-03-24 17:44 ` Antoine Bouyer
2026-03-25 13:23 ` Jacopo Mondi
[not found] ` <20260123080938.3367348-2-antoine.bouyer@nxp.com>
[not found] ` <aYIb8ZIZDfCJZEZ9@zed>
[not found] ` <71b57f1c-be22-46a2-89a2-5abae11e0436@nxp.com>
[not found] ` <aYNEtmJwnAtYitHO@zed>
[not found] ` <20260209230036.GF2405149@killaraus.ideasonboard.com>
2026-03-02 9:41 ` Re: [RFC v1 01/11] media: uapi: v4l2-isp: Add v4l2 ISP extensible statistics definitions Antoine Bouyer
2026-03-03 8:48 ` Jacopo Mondi
2026-04-03 8:19 ` Jacopo Mondi
2026-04-07 7:37 ` Antoine Bouyer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox