This patch series add support for the TI VIP video capture engine.
VIP stands for Video Input Port, it can be found on devices such as
DRA7xx and provides a parallel interface to a video source such as
a sensor or TV decoder.  Each VIP can support two inputs (slices) and
a SoC can be configured with a variable number of VIP's.
Each slice can support two ports each connected to its own
sub-device.

Here is the output of v4l2-compliance against this driver:

# v4l2-compliance -s -d 1
v4l2-compliance SHA: not available, 32 bits
Compliance test for vip device /dev/video1:

        Driver name      : vip
        Card type        : vip
        Bus info         : platform:vip1:vin2a:stream0
        Driver version   : 5.7.0
        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/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

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
        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: 5 Private Controls: 0

Format ioctls (Input 0):
        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
        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
        Video Capture: Frame #002               warn: 
v4l2-test-buffers.cpp(446): got sequence number 4, expected 3
        Video Capture: Frame #005               warn: 
v4l2-test-buffers.cpp(446): got sequence number 8, expected 7
        Video Capture: Frame #008               warn: 
v4l2-test-buffers.cpp(446): got sequence number 12, expected 11
        Video Capture: Frame #011               warn: 
v4l2-test-buffers.cpp(446): got sequence number 16, expected 15
        Video Capture: Frame #014               warn: 
v4l2-test-buffers.cpp(446): got sequence number 20, expected 19
        Video Capture: Frame #017               warn: 
v4l2-test-buffers.cpp(446): got sequence number 24, expected 23
        Video Capture: Frame #020               warn: 
v4l2-test-buffers.cpp(446): got sequence number 28, expected 27
        Video Capture: Frame #023               warn: 
v4l2-test-buffers.cpp(446): got sequence number 32, expected 31
        Video Capture: Frame #026               warn: 
v4l2-test-buffers.cpp(446): got sequence number 36, expected 35
        Video Capture: Frame #029               warn: 
v4l2-test-buffers.cpp(446): got sequence number 40, expected 39
        Video Capture: Frame #032               warn: 
v4l2-test-buffers.cpp(446): got sequence number 44, expected 43
        Video Capture: Frame #035               warn: 
v4l2-test-buffers.cpp(446): got sequence number 48, expected 47
        Video Capture: Frame #038               warn: 
v4l2-test-buffers.cpp(446): got sequence number 52, expected 51
        Video Capture: Frame #041               warn: 
v4l2-test-buffers.cpp(446): got sequence number 56, expected 55
        Video Capture: Frame #044               warn: 
v4l2-test-buffers.cpp(446): got sequence number 60, expected 59
        Video Capture: Frame #047               warn: 
v4l2-test-buffers.cpp(446): got sequence number 64, expected 63
        Video Capture: Frame #050               warn: 
v4l2-test-buffers.cpp(446): got sequence number 68, expected 67
        Video Capture: Frame #053               warn: 
v4l2-test-buffers.cpp(446): got sequence number 72, expected 71
        Video Capture: Frame #056               warn: 
v4l2-test-buffers.cpp(446): got sequence number 76, expected 75
        test MMAP (no poll): OK                           
        Video Capture: Frame #002 (select)              warn: 
v4l2-test-buffers.cpp(446): got sequence number 4, expected 3
        Video Capture: Frame #005 (select)              warn: 
v4l2-test-buffers.cpp(446): got sequence number 8, expected 7
        Video Capture: Frame #008 (select)              warn: 
v4l2-test-buffers.cpp(446): got sequence number 12, expected 11
        Video Capture: Frame #011 (select)              warn: 
v4l2-test-buffers.cpp(446): got sequence number 16, expected 15
        Video Capture: Frame #014 (select)              warn: 
v4l2-test-buffers.cpp(446): got sequence number 20, expected 19
        Video Capture: Frame #017 (select)              warn: 
v4l2-test-buffers.cpp(446): got sequence number 24, expected 23
        Video Capture: Frame #020 (select)              warn: 
v4l2-test-buffers.cpp(446): got sequence number 28, expected 27
        Video Capture: Frame #023 (select)              warn: 
v4l2-test-buffers.cpp(446): got sequence number 32, expected 31
        Video Capture: Frame #026 (select)              warn: 
v4l2-test-buffers.cpp(446): got sequence number 36, expected 35
        Video Capture: Frame #029 (select)              warn: 
v4l2-test-buffers.cpp(446): got sequence number 40, expected 39
        Video Capture: Frame #032 (select)              warn: 
v4l2-test-buffers.cpp(446): got sequence number 44, expected 43
        Video Capture: Frame #035 (select)              warn: 
v4l2-test-buffers.cpp(446): got sequence number 48, expected 47
        Video Capture: Frame #038 (select)              warn: 
v4l2-test-buffers.cpp(446): got sequence number 52, expected 51
        Video Capture: Frame #041 (select)              warn: 
v4l2-test-buffers.cpp(446): got sequence number 56, expected 55
        Video Capture: Frame #044 (select)              warn: 
v4l2-test-buffers.cpp(446): got sequence number 60, expected 59
        Video Capture: Frame #047 (select)              warn: 
v4l2-test-buffers.cpp(446): got sequence number 64, expected 63
        Video Capture: Frame #050 (select)              warn: 
v4l2-test-buffers.cpp(446): got sequence number 68, expected 67
        Video Capture: Frame #053 (select)              warn: 
v4l2-test-buffers.cpp(446): got sequence number 72, expected 71
        Video Capture: Frame #056 (select)              warn: 
v4l2-test-buffers.cpp(446): got sequence number 76, expected 75
        test MMAP (select): OK                            
        Video Capture: Frame #002 (epoll)               warn: 
v4l2-test-buffers.cpp(446): got sequence number 4, expected 3
        Video Capture: Frame #005 (epoll)               warn: 
v4l2-test-buffers.cpp(446): got sequence number 8, expected 7
        Video Capture: Frame #008 (epoll)               warn: 
v4l2-test-buffers.cpp(446): got sequence number 12, expected 11
        Video Capture: Frame #011 (epoll)               warn: 
v4l2-test-buffers.cpp(446): got sequence number 16, expected 15
        Video Capture: Frame #014 (epoll)               warn: 
v4l2-test-buffers.cpp(446): got sequence number 20, expected 19
        Video Capture: Frame #017 (epoll)               warn: 
v4l2-test-buffers.cpp(446): got sequence number 24, expected 23
        Video Capture: Frame #020 (epoll)               warn: 
v4l2-test-buffers.cpp(446): got sequence number 28, expected 27
        Video Capture: Frame #023 (epoll)               warn: 
v4l2-test-buffers.cpp(446): got sequence number 32, expected 31
        Video Capture: Frame #026 (epoll)               warn: 
v4l2-test-buffers.cpp(446): got sequence number 36, expected 35
        Video Capture: Frame #029 (epoll)               warn: 
v4l2-test-buffers.cpp(446): got sequence number 40, expected 39
        Video Capture: Frame #032 (epoll)               warn: 
v4l2-test-buffers.cpp(446): got sequence number 44, expected 43
        Video Capture: Frame #035 (epoll)               warn: 
v4l2-test-buffers.cpp(446): got sequence number 48, expected 47
        Video Capture: Frame #038 (epoll)               warn: 
v4l2-test-buffers.cpp(446): got sequence number 52, expected 51
        Video Capture: Frame #041 (epoll)               warn: 
v4l2-test-buffers.cpp(446): got sequence number 56, expected 55
        Video Capture: Frame #044 (epoll)               warn: 
v4l2-test-buffers.cpp(446): got sequence number 60, expected 59
        Video Capture: Frame #047 (epoll)               warn: 
v4l2-test-buffers.cpp(446): got sequence number 64, expected 63
        Video Capture: Frame #050 (epoll)               warn: 
v4l2-test-buffers.cpp(446): got sequence number 68, expected 67
        Video Capture: Frame #053 (epoll)               warn: 
v4l2-test-buffers.cpp(446): got sequence number 72, expected 71
        Video Capture: Frame #056 (epoll)               warn: 
v4l2-test-buffers.cpp(446): got sequence number 76, expected 75
        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 vip device /dev/video1: 51, Succeeded: 51, Failed: 0, Warnings: 57

Benoit Parrot (2):
  dt-binbings: media: ti-vpe: Document the VIP driver
  media: ti-vpe: Add the VIP driver

 .../devicetree/bindings/media/ti,vip.yaml     |  394 ++
 MAINTAINERS                                   |    1 +
 drivers/media/platform/Kconfig                |   13 +
 drivers/media/platform/ti-vpe/Makefile        |    2 +
 drivers/media/platform/ti-vpe/vip.c           | 4158 +++++++++++++++++
 drivers/media/platform/ti-vpe/vip.h           |  724 +++
 6 files changed, 5292 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/media/ti,vip.yaml
 create mode 100644 drivers/media/platform/ti-vpe/vip.c
 create mode 100644 drivers/media/platform/ti-vpe/vip.h

-- 
2.17.1

Reply via email to