mbox series

[0/2] media: ti-vpe: Add the VIP driver

Message ID 20200522225412.29440-1-bparrot@ti.com (mailing list archive)
Headers show
Series media: ti-vpe: Add the VIP driver | expand

Message

Benoit Parrot May 22, 2020, 10:54 p.m. UTC
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