mbox series

[0/2] DCMI bridge support

Message ID 1554111076-31471-1-git-send-email-hugues.fruchet@st.com (mailing list archive)
Headers show
Series DCMI bridge support | expand

Message

Hugues FRUCHET April 1, 2019, 9:31 a.m. UTC
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.

[1] https://www.spinics.net/lists/devicetree/msg278002.html

Hugues Fruchet (2):
  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 | 213 ++++++++++++++++++++++++------
 2 files changed, 177 insertions(+), 38 deletions(-)

Comments

Hans Verkuil April 1, 2019, 11:10 a.m. UTC | #1
Hi Hugues,

On 4/1/19 11:31 AM, 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.

Can you post the output of v4l2-compliance -m /dev/mediaX ?

Thanks!

	Hans

> 
> [1] https://www.spinics.net/lists/devicetree/msg278002.html
> 
> Hugues Fruchet (2):
>   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 | 213 ++++++++++++++++++++++++------
>  2 files changed, 177 insertions(+), 38 deletions(-)
>
Hugues FRUCHET April 1, 2019, 1:08 p.m. UTC | #2
Hi Hans,

Here it is.

SHA1 is aa371c995ec2ad70323db00c47b3132002b060b7:

Author: Hans Verkuil <hverkuil-cisco@xs4all.nl>  2019-02-08 16:21:23
Committer: Hans Verkuil <hverkuil-cisco@xs4all.nl>  2019-02-08 16:21:23
Parent: 98d5622551eb6b9a0397464fb52378949f33c364 (v4l2-compliance: 
support m2m devices with -f)
Child:  59f9840781aab464c1331dcdb82e63dd0544b5c6 (v4l2-compliance: 
remove duplicate MEDIA_IOC_DEVICE_INFO ioctl call)
Branches: master, master2, remotes/origin/master
Follows: v4l-utils-1.16.0
Precedes:

     v4l2-compliance: -f bug fixes


Result is below:

root@stm32mp1:~# v4l2-compliance -m /dev/media0
v4l2-compliance SHA: eb8e3b07c9249ff56091ae4bc3ae9b76779db4cd, 32 bits

Compliance test for stm32-dcmi device /dev/media0:

Media Driver Info:
         Driver name      : stm32-dcmi
         Model            : stm32-dcmi
         Serial           :
         Bus info         : platform:stm32-dcmi
         Media version    : 5.0.0
         Hardware revision: 0x00000000 (0)
         Driver version   : 5.0.0

Required ioctls:
         test MEDIA_IOC_DEVICE_INFO: 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: 3 Interfaces: 2 Pads: 4 Links: 4
         test MEDIA_IOC_ENUM_ENTITIES/LINKS: OK
         test MEDIA_IOC_SETUP_LINK: OK

Total for stm32-dcmi device /dev/media0: 7, Succeeded: 7, Failed: 0, 
Warnings: 0
--------------------------------------------------------------------------------
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   : 5.0.0
         Capabilities     : 0x85200001
                 Video Capture
                 Read/Write
                 Streaming
                 [ 2117.336477] stm32-dcmi 4c006000.dcmi: 
=================  START STATUS  =================
E[ 2117.344647] stm32-dcmi 4c006000.dcmi: White Balance, Automatic: true
[ 2117.350990] stm32-dcmi 4c006000.dcmi: Blue Balance: 0 inactive
x[ 2117.356853] stm32-dcmi 4c006000.dcmi: Red Balance: 0 inactive
[ 2117.362645] stm32-dcmi 4c006000.dcmi: Auto Exposure: Auto Mode
[ 2117.368438] stm32-dcmi 4c006000.dcmi: Exposure: 0 inactive volatile
t[ 2117.374729] stm32-dcmi 4c006000.dcmi: Gain, Automatic: true
[ 2117.380335] stm32-dcmi 4c006000.dcmi: Gain: 0 inactive volatile
e[ 2117.386305] stm32-dcmi 4c006000.dcmi: Saturation: 64
[ 2117.391275] stm32-dcmi 4c006000.dcmi: Hue: 0
n[ 2117.395572] stm32-dcmi 4c006000.dcmi: Contrast: 0
[ 2117.400305] stm32-dcmi 4c006000.dcmi: Test Pattern: Disabled
d[ 2117.405988] stm32-dcmi 4c006000.dcmi: Horizontal Flip: false
[ 2117.411721] stm32-dcmi 4c006000.dcmi: Vertical Flip: false
[ 2117.417148] stm32-dcmi 4c006000.dcmi: Power Line Frequency: 50 Hz
[ 2117.423265] stm32-dcmi 4c006000.dcmi: ==================  END STATUS 
==================
ed Pix Format
                 Device Capabilities
         Device Caps      : 0x05200001
                 Video Capture
                 Read/Write
                 Streaming
                 Extended Pix Format
Media Driver Info:
         Driver name      : stm32-dcmi
         Model            : stm32-dcmi
         Serial           :
         Bus info         : platform:stm32-dcmi
         Media version    : 5.0.0
         Hardware revision: 0x00000000 (0)
         Driver version   : 5.0.0
Interface Info:
         ID               : 0x03000003
         Type             : V4L Video
Entity Info:
         ID               : 0x00000001 (1)
         Name             : stm32_dcmi
         Function         : V4L2 I/O
         Flags         : default
         Pad 0x01000002   : 0: Sink
           Link 0x02000008: from remote pad 0x1000007 of entity 'mipid02 
0-0014': Data, Enabled, Immutable

Required ioctls:
         test MC information (see 'Media Driver Info' above): OK
                 warn: 
../../../../../../../../../sources/v4l-utils/utils/v4l2-compliance/v4l2-compliance.cpp(621): 
media bus_info 'platform:stm32-dcmi
' differs from V4L2 bus_info 'platform:dcmi'
         test VIDIOC_QUERYCAP: OK

Allow for multiple opens:
         test second /dev/video0 open: OK
                 warn: 
../../../../../../../../../sources/v4l-utils/utils/v4l2-compliance/v4l2-compliance.cpp(621): 
media bus_info 'platform:stm32-dcmi
' differs from V4L2 bus_info 'platform:dcmi'
         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_FRE[ 2117.564770] mipid02 0-0014: 
=================  START STATUS  =================
Q[ 2117.572042] mipid02 0-0014: ==================  END STATUS 
==================
UENCY: 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: 17 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(1338): 
node->frmsizes_count[pixfmt] > 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)

Total for stm32-dcmi device /dev/video0: 45, Succeeded: 44, Failed: 1, 
Warnings: 2
--------------------------------------------------------------------------------
Compliance test for device /dev/v4l-subdev0:


Required ioctls:

Allow for multiple opens:
         test second /dev/v4l-subdev0 open: 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)

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 (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 VIDIOC_EXPBUF: OK (Not Supported)
         test Requests: OK (Not Supported)

Total for device /dev/v4l-subdev0: 40, Succeeded: 40, Failed: 0, Warnings: 0

Grand Total for stm32-dcmi device /dev/media0: 92, Succeeded: 91, 
Failed: 1, Warnings: 2


BR,
Hugues.

On 4/1/19 1:10 PM, Hans Verkuil wrote:
> Hi Hugues,
> 
> On 4/1/19 11:31 AM, 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.
> 
> Can you post the output of v4l2-compliance -m /dev/mediaX ?
> 
> Thanks!
> 
> 	Hans
> 
>>
>> [1] https://www.spinics.net/lists/devicetree/msg278002.html
>>
>> Hugues Fruchet (2):
>>    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 | 213 ++++++++++++++++++++++++------
>>   2 files changed, 177 insertions(+), 38 deletions(-)
>>
>
Hans Verkuil April 1, 2019, 1:30 p.m. UTC | #3
On 4/1/19 3:08 PM, Hugues FRUCHET wrote:
> Hi Hans,
> 
> Here it is.
> 
> SHA1 is aa371c995ec2ad70323db00c47b3132002b060b7:
> 
> Author: Hans Verkuil <hverkuil-cisco@xs4all.nl>  2019-02-08 16:21:23
> Committer: Hans Verkuil <hverkuil-cisco@xs4all.nl>  2019-02-08 16:21:23
> Parent: 98d5622551eb6b9a0397464fb52378949f33c364 (v4l2-compliance: 
> support m2m devices with -f)
> Child:  59f9840781aab464c1331dcdb82e63dd0544b5c6 (v4l2-compliance: 
> remove duplicate MEDIA_IOC_DEVICE_INFO ioctl call)
> Branches: master, master2, remotes/origin/master
> Follows: v4l-utils-1.16.0
> Precedes:
> 
>      v4l2-compliance: -f bug fixes
> 
> 
> Result is below:
> 
> root@stm32mp1:~# v4l2-compliance -m /dev/media0
> v4l2-compliance SHA: eb8e3b07c9249ff56091ae4bc3ae9b76779db4cd, 32 bits
> 
> Compliance test for stm32-dcmi device /dev/media0:
> 
> Media Driver Info:
>          Driver name      : stm32-dcmi
>          Model            : stm32-dcmi
>          Serial           :
>          Bus info         : platform:stm32-dcmi
>          Media version    : 5.0.0
>          Hardware revision: 0x00000000 (0)
>          Driver version   : 5.0.0
> 
> Required ioctls:
>          test MEDIA_IOC_DEVICE_INFO: 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: 3 Interfaces: 2 Pads: 4 Links: 4
>          test MEDIA_IOC_ENUM_ENTITIES/LINKS: OK
>          test MEDIA_IOC_SETUP_LINK: OK
> 
> Total for stm32-dcmi device /dev/media0: 7, Succeeded: 7, Failed: 0, 
> Warnings: 0
> --------------------------------------------------------------------------------
> 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   : 5.0.0
>          Capabilities     : 0x85200001
>                  Video Capture
>                  Read/Write
>                  Streaming
>                  [ 2117.336477] stm32-dcmi 4c006000.dcmi: 
> =================  START STATUS  =================
> E[ 2117.344647] stm32-dcmi 4c006000.dcmi: White Balance, Automatic: true
> [ 2117.350990] stm32-dcmi 4c006000.dcmi: Blue Balance: 0 inactive
> x[ 2117.356853] stm32-dcmi 4c006000.dcmi: Red Balance: 0 inactive
> [ 2117.362645] stm32-dcmi 4c006000.dcmi: Auto Exposure: Auto Mode
> [ 2117.368438] stm32-dcmi 4c006000.dcmi: Exposure: 0 inactive volatile
> t[ 2117.374729] stm32-dcmi 4c006000.dcmi: Gain, Automatic: true
> [ 2117.380335] stm32-dcmi 4c006000.dcmi: Gain: 0 inactive volatile
> e[ 2117.386305] stm32-dcmi 4c006000.dcmi: Saturation: 64
> [ 2117.391275] stm32-dcmi 4c006000.dcmi: Hue: 0
> n[ 2117.395572] stm32-dcmi 4c006000.dcmi: Contrast: 0
> [ 2117.400305] stm32-dcmi 4c006000.dcmi: Test Pattern: Disabled
> d[ 2117.405988] stm32-dcmi 4c006000.dcmi: Horizontal Flip: false
> [ 2117.411721] stm32-dcmi 4c006000.dcmi: Vertical Flip: false
> [ 2117.417148] stm32-dcmi 4c006000.dcmi: Power Line Frequency: 50 Hz
> [ 2117.423265] stm32-dcmi 4c006000.dcmi: ==================  END STATUS 
> ==================
> ed Pix Format
>                  Device Capabilities
>          Device Caps      : 0x05200001
>                  Video Capture
>                  Read/Write
>                  Streaming
>                  Extended Pix Format
> Media Driver Info:
>          Driver name      : stm32-dcmi
>          Model            : stm32-dcmi
>          Serial           :
>          Bus info         : platform:stm32-dcmi
>          Media version    : 5.0.0
>          Hardware revision: 0x00000000 (0)
>          Driver version   : 5.0.0
> Interface Info:
>          ID               : 0x03000003
>          Type             : V4L Video
> Entity Info:
>          ID               : 0x00000001 (1)
>          Name             : stm32_dcmi
>          Function         : V4L2 I/O
>          Flags         : default
>          Pad 0x01000002   : 0: Sink
>            Link 0x02000008: from remote pad 0x1000007 of entity 'mipid02 
> 0-0014': Data, Enabled, Immutable
> 
> Required ioctls:
>          test MC information (see 'Media Driver Info' above): OK
>                  warn: 
> ../../../../../../../../../sources/v4l-utils/utils/v4l2-compliance/v4l2-compliance.cpp(621): 
> media bus_info 'platform:stm32-dcmi
> ' differs from V4L2 bus_info 'platform:dcmi'
>          test VIDIOC_QUERYCAP: OK
> 
> Allow for multiple opens:
>          test second /dev/video0 open: OK
>                  warn: 
> ../../../../../../../../../sources/v4l-utils/utils/v4l2-compliance/v4l2-compliance.cpp(621): 
> media bus_info 'platform:stm32-dcmi
> ' differs from V4L2 bus_info 'platform:dcmi'
>          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_FRE[ 2117.564770] mipid02 0-0014: 
> =================  START STATUS  =================
> Q[ 2117.572042] mipid02 0-0014: ==================  END STATUS 
> ==================
> UENCY: 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: 17 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(1338): 
> node->frmsizes_count[pixfmt] > 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)
> 
> Total for stm32-dcmi device /dev/video0: 45, Succeeded: 44, Failed: 1, 
> Warnings: 2
> --------------------------------------------------------------------------------
> Compliance test for device /dev/v4l-subdev0:
> 
> 
> Required ioctls:
> 
> Allow for multiple opens:
>          test second /dev/v4l-subdev0 open: 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)
> 
> 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 (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 VIDIOC_EXPBUF: OK (Not Supported)
>          test Requests: OK (Not Supported)
> 
> Total for device /dev/v4l-subdev0: 40, Succeeded: 40, Failed: 0, Warnings: 0
> 
> Grand Total for stm32-dcmi device /dev/media0: 92, Succeeded: 91, 
> Failed: 1, Warnings: 2

The warnings should be fixed (both warnings refer to the same problem).

The fail was present before this patch series.

The core problem there is that if there are multiple possible framesizes,
then crop support is ambiguous: against which framesize do you crop?

I see that dcmi_try_fmt() has a heuristic for that. We really need to fix
this in the API, but this situation rarely occurs.

So for now I don't think there is a need to fix the fail.

Regards,

	Hans

> 
> 
> BR,
> Hugues.
> 
> On 4/1/19 1:10 PM, Hans Verkuil wrote:
>> Hi Hugues,
>>
>> On 4/1/19 11:31 AM, 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.
>>
>> Can you post the output of v4l2-compliance -m /dev/mediaX ?
>>
>> Thanks!
>>
>> 	Hans
>>
>>>
>>> [1] https://www.spinics.net/lists/devicetree/msg278002.html
>>>
>>> Hugues Fruchet (2):
>>>    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 | 213 ++++++++++++++++++++++++------
>>>   2 files changed, 177 insertions(+), 38 deletions(-)
>>>
Hugues FRUCHET April 2, 2019, 9:17 a.m. UTC | #4
Thanks Hans,

I've aligned both namings by updating querycap:

@@ -1257,7 +1257,8 @@ static int dcmi_querycap(struct file *file, void 
*priv,
  	strscpy(cap->driver, DRV_NAME, sizeof(cap->driver));
  	strscpy(cap->card, "STM32 Camera Memory Interface",
  		sizeof(cap->card));
-	strscpy(cap->bus_info, "platform:dcmi", sizeof(cap->bus_info));
+	snprintf(cap->bus_info, sizeof(cap->bus_info),
+		 "platform:%s", DRV_NAME);
  	return 0;
  }

so now both V4L2 and MC are returning  "platform:stm32-dcmi".

I'll push in v2.

BR,
Hugues.


On 4/1/19 3:30 PM, Hans Verkuil wrote:
> On 4/1/19 3:08 PM, Hugues FRUCHET wrote:
>> Hi Hans,
>>
>> Here it is.
>>
>> SHA1 is aa371c995ec2ad70323db00c47b3132002b060b7:
>>
>> Author: Hans Verkuil <hverkuil-cisco@xs4all.nl>  2019-02-08 16:21:23
>> Committer: Hans Verkuil <hverkuil-cisco@xs4all.nl>  2019-02-08 16:21:23
>> Parent: 98d5622551eb6b9a0397464fb52378949f33c364 (v4l2-compliance:
>> support m2m devices with -f)
>> Child:  59f9840781aab464c1331dcdb82e63dd0544b5c6 (v4l2-compliance:
>> remove duplicate MEDIA_IOC_DEVICE_INFO ioctl call)
>> Branches: master, master2, remotes/origin/master
>> Follows: v4l-utils-1.16.0
>> Precedes:
>>
>>       v4l2-compliance: -f bug fixes
>>
>>
>> Result is below:
>>
>> root@stm32mp1:~# v4l2-compliance -m /dev/media0
>> v4l2-compliance SHA: eb8e3b07c9249ff56091ae4bc3ae9b76779db4cd, 32 bits
>>
>> Compliance test for stm32-dcmi device /dev/media0:
>>
>> Media Driver Info:
>>           Driver name      : stm32-dcmi
>>           Model            : stm32-dcmi
>>           Serial           :
>>           Bus info         : platform:stm32-dcmi
>>           Media version    : 5.0.0
>>           Hardware revision: 0x00000000 (0)
>>           Driver version   : 5.0.0
>>
>> Required ioctls:
>>           test MEDIA_IOC_DEVICE_INFO: 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: 3 Interfaces: 2 Pads: 4 Links: 4
>>           test MEDIA_IOC_ENUM_ENTITIES/LINKS: OK
>>           test MEDIA_IOC_SETUP_LINK: OK
>>
>> Total for stm32-dcmi device /dev/media0: 7, Succeeded: 7, Failed: 0,
>> Warnings: 0
>> --------------------------------------------------------------------------------
>> 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   : 5.0.0
>>           Capabilities     : 0x85200001
>>                   Video Capture
>>                   Read/Write
>>                   Streaming
>>                   [ 2117.336477] stm32-dcmi 4c006000.dcmi:
>> =================  START STATUS  =================
>> E[ 2117.344647] stm32-dcmi 4c006000.dcmi: White Balance, Automatic: true
>> [ 2117.350990] stm32-dcmi 4c006000.dcmi: Blue Balance: 0 inactive
>> x[ 2117.356853] stm32-dcmi 4c006000.dcmi: Red Balance: 0 inactive
>> [ 2117.362645] stm32-dcmi 4c006000.dcmi: Auto Exposure: Auto Mode
>> [ 2117.368438] stm32-dcmi 4c006000.dcmi: Exposure: 0 inactive volatile
>> t[ 2117.374729] stm32-dcmi 4c006000.dcmi: Gain, Automatic: true
>> [ 2117.380335] stm32-dcmi 4c006000.dcmi: Gain: 0 inactive volatile
>> e[ 2117.386305] stm32-dcmi 4c006000.dcmi: Saturation: 64
>> [ 2117.391275] stm32-dcmi 4c006000.dcmi: Hue: 0
>> n[ 2117.395572] stm32-dcmi 4c006000.dcmi: Contrast: 0
>> [ 2117.400305] stm32-dcmi 4c006000.dcmi: Test Pattern: Disabled
>> d[ 2117.405988] stm32-dcmi 4c006000.dcmi: Horizontal Flip: false
>> [ 2117.411721] stm32-dcmi 4c006000.dcmi: Vertical Flip: false
>> [ 2117.417148] stm32-dcmi 4c006000.dcmi: Power Line Frequency: 50 Hz
>> [ 2117.423265] stm32-dcmi 4c006000.dcmi: ==================  END STATUS
>> ==================
>> ed Pix Format
>>                   Device Capabilities
>>           Device Caps      : 0x05200001
>>                   Video Capture
>>                   Read/Write
>>                   Streaming
>>                   Extended Pix Format
>> Media Driver Info:
>>           Driver name      : stm32-dcmi
>>           Model            : stm32-dcmi
>>           Serial           :
>>           Bus info         : platform:stm32-dcmi
>>           Media version    : 5.0.0
>>           Hardware revision: 0x00000000 (0)
>>           Driver version   : 5.0.0
>> Interface Info:
>>           ID               : 0x03000003
>>           Type             : V4L Video
>> Entity Info:
>>           ID               : 0x00000001 (1)
>>           Name             : stm32_dcmi
>>           Function         : V4L2 I/O
>>           Flags         : default
>>           Pad 0x01000002   : 0: Sink
>>             Link 0x02000008: from remote pad 0x1000007 of entity 'mipid02
>> 0-0014': Data, Enabled, Immutable
>>
>> Required ioctls:
>>           test MC information (see 'Media Driver Info' above): OK
>>                   warn:
>> ../../../../../../../../../sources/v4l-utils/utils/v4l2-compliance/v4l2-compliance.cpp(621):
>> media bus_info 'platform:stm32-dcmi
>> ' differs from V4L2 bus_info 'platform:dcmi'
>>           test VIDIOC_QUERYCAP: OK
>>
>> Allow for multiple opens:
>>           test second /dev/video0 open: OK
>>                   warn:
>> ../../../../../../../../../sources/v4l-utils/utils/v4l2-compliance/v4l2-compliance.cpp(621):
>> media bus_info 'platform:stm32-dcmi
>> ' differs from V4L2 bus_info 'platform:dcmi'
>>           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_FRE[ 2117.564770] mipid02 0-0014:
>> =================  START STATUS  =================
>> Q[ 2117.572042] mipid02 0-0014: ==================  END STATUS
>> ==================
>> UENCY: 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: 17 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(1338):
>> node->frmsizes_count[pixfmt] > 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)
>>
>> Total for stm32-dcmi device /dev/video0: 45, Succeeded: 44, Failed: 1,
>> Warnings: 2
>> --------------------------------------------------------------------------------
>> Compliance test for device /dev/v4l-subdev0:
>>
>>
>> Required ioctls:
>>
>> Allow for multiple opens:
>>           test second /dev/v4l-subdev0 open: 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)
>>
>> 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 (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 VIDIOC_EXPBUF: OK (Not Supported)
>>           test Requests: OK (Not Supported)
>>
>> Total for device /dev/v4l-subdev0: 40, Succeeded: 40, Failed: 0, Warnings: 0
>>
>> Grand Total for stm32-dcmi device /dev/media0: 92, Succeeded: 91,
>> Failed: 1, Warnings: 2
> 
> The warnings should be fixed (both warnings refer to the same problem).
> 
> The fail was present before this patch series.
> 
> The core problem there is that if there are multiple possible framesizes,
> then crop support is ambiguous: against which framesize do you crop?
> 
> I see that dcmi_try_fmt() has a heuristic for that. We really need to fix
> this in the API, but this situation rarely occurs.
> 
> So for now I don't think there is a need to fix the fail.
> 
> Regards,
> 
> 	Hans
> 
>>
>>
>> BR,
>> Hugues.
>>
>> On 4/1/19 1:10 PM, Hans Verkuil wrote:
>>> Hi Hugues,
>>>
>>> On 4/1/19 11:31 AM, 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.
>>>
>>> Can you post the output of v4l2-compliance -m /dev/mediaX ?
>>>
>>> Thanks!
>>>
>>> 	Hans
>>>
>>>>
>>>> [1] https://www.spinics.net/lists/devicetree/msg278002.html
>>>>
>>>> Hugues Fruchet (2):
>>>>     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 | 213 ++++++++++++++++++++++++------
>>>>    2 files changed, 177 insertions(+), 38 deletions(-)
>>>>
>