Message ID | 1564577783-18627-1-git-send-email-hugues.fruchet@st.com (mailing list archive) |
---|---|
Headers | show |
Series | DCMI bridge support | expand |
Hi Hugues, Can you provide the output of the most recent v4l2-compliance? Use 'v4l2-compliance -s'. Also, just to confirm, with this v4 there are no /dev/mediaX or /dev/v4l-subdevX devices created anymore, right? This v4 looks good to me, I just want to have these final checks done. Regards, Hans On 7/31/19 2:56 PM, Hugues Fruchet wrote: > This patch serie allows to connect non-parallel camera sensor to > DCMI thanks to a bridge connected in between such as STMIPID02 [1]. > > Media controller support is introduced first, then support of > several sub-devices within pipeline with dynamic linking > between them. > In order to keep backward compatibility with applications > relying on V4L2 interface only, format set on video node > is propagated to all sub-devices connected to camera interface. > > [1] https://www.spinics.net/lists/devicetree/msg278002.html > > =========== > = history = > =========== > version 4: > - Also drop subdev nodes registry as suggested by Hans: > https://www.spinics.net/lists/arm-kernel/msg743375.html > > version 3: > - Drop media device registry to not expose media controller > interface to userspace as per Laurent' suggestion: > https://www.spinics.net/lists/linux-media/msg153417.html > - Prefer "source" instead of "sensor" and keep it in > dcmi_graph_entity struct, move asd as first member > of struct as per Sakari' suggestion: > https://www.spinics.net/lists/linux-media/msg153119.html > - Drop dcmi_graph_deinit() as per Sakari' suggestion: > https://www.spinics.net/lists/linux-media/msg153417.html > > version 2: > - Fix bus_info not consistent between media and V4L: > https://www.spinics.net/lists/arm-kernel/msg717676.html > - Propagation of format set on video node to the sub-devices > chain connected on camera interface > > version 1: > - Initial submission > > Hugues Fruchet (3): > media: stm32-dcmi: improve sensor subdev naming > media: stm32-dcmi: add media controller support > media: stm32-dcmi: add support of several sub-devices > > drivers/media/platform/Kconfig | 2 +- > drivers/media/platform/stm32/stm32-dcmi.c | 283 +++++++++++++++++++++++++----- > 2 files changed, 236 insertions(+), 49 deletions(-) >
Hi Hans, You're welcome, here it is: 1) v4l-utils master branch, commit 6aa15f7447d4aeca6af1ed7ee9644a0c7e891ece "v4l2-ctl: fix double decrementing of stream_count" 2) Cropping test is failed as usual because of OV5640 discrete framesizes 3) No more /dev/media* and /dev/v4l-*: root@stm32mp1-av96:~# ls -al /dev/video0 crw-rw---- 1 root video 81, 0 Mar 19 17:42 /dev/video0 root@stm32mp1-av96:~# ls -al /dev/media* ls: cannot access '/dev/media*': No such file or directory root@stm32mp1-av96:~# ls -al /dev/v4l-* ls: cannot access '/dev/v4l-*': No such file or directory root@stm32mp1-av96:~# v4l2-compliance -s v4l2-compliance SHA: 6aa15f7447d4aeca6af1ed7ee9644a0c7e891ece, 32 bits Compliance test for stm32-dcmi device /dev/video0: Driver Info: Driver name : stm32-dcmi Card type : STM32 Camera Memory Interface Bus info : platform:dcmi Driver version : 4.19.49 Capabilities : 0x85200001 Video Capture Read/Write Streaming Extended Pix Format Device Capabilities Device Caps : 0x05200001 Video Capture Read/Write Streaming Extended Pix Format Required ioctls: test VIDIOC_QUERYCAP: 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 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 test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 1 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 (Input 0): 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: 18 Private Controls: 0 Format ioctls (Input 0): test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK test VIDIOC_G/S_PARM: OK 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) fail: ../../../../../../../../../sources/v4l-utils/utils/v4l2-compliance/v4l2-test-formats.cpp(1414): node->frmsizes_count[pixfm t] > 1 test Cropping: FAIL test Composing: OK (Not Supported) test Scaling: OK (Not Supported) Codec ioctls (Input 0): 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 (Input 0): test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test VIDIOC_EXPBUF: OK test Requests: OK (Not Supported) Test input 0: Streaming ioctls: test read/write: OK test blocking wait: OK test MMAP (no poll): OK test MMAP (select): OK test MMAP (epoll): OK test USERPTR (no poll): OK (Not Supported) test USERPTR (select): OK (Not Supported) test DMABUF: Cannot test, specify --expbuf-device Total for stm32-dcmi device /dev/video0: 51, Succeeded: 50, Failed: 1, Warnings: 0 On 8/7/19 12:15 PM, Hans Verkuil wrote: > Hi Hugues, > > Can you provide the output of the most recent v4l2-compliance? > > Use 'v4l2-compliance -s'. > > Also, just to confirm, with this v4 there are no /dev/mediaX or > /dev/v4l-subdevX devices created anymore, right? > > This v4 looks good to me, I just want to have these final checks > done. > > Regards, > > Hans > Best regards, Hugues.
Hi Hugues, On 8/8/19 11:38 AM, Hugues FRUCHET wrote: > Hi Hans, > > You're welcome, here it is: > > 1) v4l-utils master branch, commit > 6aa15f7447d4aeca6af1ed7ee9644a0c7e891ece "v4l2-ctl: fix double > decrementing of stream_count" > > 2) Cropping test is failed as usual because of OV5640 discrete framesizes > > 3) No more /dev/media* and /dev/v4l-*: > root@stm32mp1-av96:~# ls -al /dev/video0 > crw-rw---- 1 root video 81, 0 Mar 19 17:42 /dev/video0 > root@stm32mp1-av96:~# ls -al /dev/media* > ls: cannot access '/dev/media*': No such file or directory > root@stm32mp1-av96:~# ls -al /dev/v4l-* > ls: cannot access '/dev/v4l-*': No such file or directory Good. One more question: is this tested with two subdevs? So a bridge+sensor? Regards, Hans > > > root@stm32mp1-av96:~# v4l2-compliance -s > v4l2-compliance SHA: 6aa15f7447d4aeca6af1ed7ee9644a0c7e891ece, 32 bits > > Compliance test for stm32-dcmi device /dev/video0: > > Driver Info: > Driver name : stm32-dcmi > Card type : STM32 Camera Memory Interface > Bus info : platform:dcmi > Driver version : 4.19.49 > Capabilities : 0x85200001 > Video Capture > Read/Write > Streaming > Extended Pix Format > Device Capabilities > Device Caps : 0x05200001 > Video Capture > Read/Write > Streaming > Extended Pix Format > > Required ioctls: > test VIDIOC_QUERYCAP: 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 > > 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 > test VIDIOC_G/S_AUDIO: OK (Not Supported) > Inputs: 1 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 (Input 0): > 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: 18 Private Controls: 0 > > Format ioctls (Input 0): > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK > test VIDIOC_G/S_PARM: OK > 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) > fail: > ../../../../../../../../../sources/v4l-utils/utils/v4l2-compliance/v4l2-test-formats.cpp(1414): > node->frmsizes_count[pixfm > t] > 1 > test Cropping: FAIL > test Composing: OK (Not Supported) > test Scaling: OK (Not Supported) > > Codec ioctls (Input 0): > 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 (Input 0): > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK > test VIDIOC_EXPBUF: OK > test Requests: OK (Not Supported) > > Test input 0: > > Streaming ioctls: > test read/write: OK > test blocking wait: OK > test MMAP (no poll): OK > test MMAP (select): OK > test MMAP (epoll): OK > test USERPTR (no poll): OK (Not Supported) > test USERPTR (select): OK (Not Supported) > test DMABUF: Cannot test, specify --expbuf-device > > Total for stm32-dcmi device /dev/video0: 51, Succeeded: 50, Failed: 1, > Warnings: 0 > > > On 8/7/19 12:15 PM, Hans Verkuil wrote: >> Hi Hugues, >> >> Can you provide the output of the most recent v4l2-compliance? >> >> Use 'v4l2-compliance -s'. >> >> Also, just to confirm, with this v4 there are no /dev/mediaX or >> /dev/v4l-subdevX devices created anymore, right? >> >> This v4 looks good to me, I just want to have these final checks >> done. >> >> Regards, >> >> Hans >> > > Best regards, > Hugues. >
Hi Hans, On 8/8/19 11:41 AM, Hans Verkuil wrote: > Hi Hugues, > > On 8/8/19 11:38 AM, Hugues FRUCHET wrote: >> Hi Hans, >> >> You're welcome, here it is: >> >> 1) v4l-utils master branch, commit >> 6aa15f7447d4aeca6af1ed7ee9644a0c7e891ece "v4l2-ctl: fix double >> decrementing of stream_count" >> >> 2) Cropping test is failed as usual because of OV5640 discrete framesizes >> >> 3) No more /dev/media* and /dev/v4l-*: >> root@stm32mp1-av96:~# ls -al /dev/video0 >> crw-rw---- 1 root video 81, 0 Mar 19 17:42 /dev/video0 >> root@stm32mp1-av96:~# ls -al /dev/media* >> ls: cannot access '/dev/media*': No such file or directory >> root@stm32mp1-av96:~# ls -al /dev/v4l-* >> ls: cannot access '/dev/v4l-*': No such file or directory > > Good. One more question: is this tested with two subdevs? So a bridge+sensor? Yes, tested with ov5640 (CSI) => st-mipid02 => stm32-dcmi. In term of hardware setup, it's an Avenger96 96 board [1] embedding an STM32MP157 (DCMI //) and an ST MIPID02 bridge (CSI to //) in order to enable CSI video input on high speed expansion connector + a D3 engineering mezzanine board [2] embedding an OV5640 CSI camera. &dcmi { ... port { dcmi_0: endpoint { remote-endpoint = <&mipid02_2>; mipid02: mipid02@14 { ... port@0 { reg = <0>; mipid02_0: endpoint { data-lanes = <1 2>; remote-endpoint = <&ov5640_0>; }; }; port@2 { reg = <2>; mipid02_2: endpoint { bus-width = <8>; hsync-active = <0>; vsync-active = <0>; pclk-sample = <0>; remote-endpoint = <&dcmi_0>; }; ov5640: camera@3c { ... ov5640_0: endpoint { remote-endpoint = <&mipid02_0>; clock-lanes = <0>; data-lanes = <1 2>; }; [1] https://www.96boards.org/product/avenger96/ https://wiki.dh-electronics.com/index.php/Avenger96 [2] https://www.96boards.org/product/d3camera/ > > Regards, > > Hans > >> >> >> root@stm32mp1-av96:~# v4l2-compliance -s >> v4l2-compliance SHA: 6aa15f7447d4aeca6af1ed7ee9644a0c7e891ece, 32 bits >> >> Compliance test for stm32-dcmi device /dev/video0: >> >> Driver Info: >> Driver name : stm32-dcmi >> Card type : STM32 Camera Memory Interface >> Bus info : platform:dcmi >> Driver version : 4.19.49 >> Capabilities : 0x85200001 >> Video Capture >> Read/Write >> Streaming >> Extended Pix Format >> Device Capabilities >> Device Caps : 0x05200001 >> Video Capture >> Read/Write >> Streaming >> Extended Pix Format >> >> Required ioctls: >> test VIDIOC_QUERYCAP: 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 >> >> 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 >> test VIDIOC_G/S_AUDIO: OK (Not Supported) >> Inputs: 1 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 (Input 0): >> 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: 18 Private Controls: 0 >> >> Format ioctls (Input 0): >> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK >> test VIDIOC_G/S_PARM: OK >> 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) >> fail: >> ../../../../../../../../../sources/v4l-utils/utils/v4l2-compliance/v4l2-test-formats.cpp(1414): >> node->frmsizes_count[pixfm >> t] > 1 >> test Cropping: FAIL >> test Composing: OK (Not Supported) >> test Scaling: OK (Not Supported) >> >> Codec ioctls (Input 0): >> 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 (Input 0): >> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK >> test VIDIOC_EXPBUF: OK >> test Requests: OK (Not Supported) >> >> Test input 0: >> >> Streaming ioctls: >> test read/write: OK >> test blocking wait: OK >> test MMAP (no poll): OK >> test MMAP (select): OK >> test MMAP (epoll): OK >> test USERPTR (no poll): OK (Not Supported) >> test USERPTR (select): OK (Not Supported) >> test DMABUF: Cannot test, specify --expbuf-device >> >> Total for stm32-dcmi device /dev/video0: 51, Succeeded: 50, Failed: 1, >> Warnings: 0 >> >> >> On 8/7/19 12:15 PM, Hans Verkuil wrote: >>> Hi Hugues, >>> >>> Can you provide the output of the most recent v4l2-compliance? >>> >>> Use 'v4l2-compliance -s'. >>> >>> Also, just to confirm, with this v4 there are no /dev/mediaX or >>> /dev/v4l-subdevX devices created anymore, right? >>> >>> This v4 looks good to me, I just want to have these final checks >>> done. >>> >>> Regards, >>> >>> Hans >>> >> >> Best regards, >> Hugues. >> > Best regards, Hugues.