linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Benoit Parrot <bparrot@ti.com>
To: Hans Verkuil <hverkuil@xs4all.nl>, Rob Herring <robh+dt@kernel.org>
Cc: <linux-media@vger.kernel.org>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, Benoit Parrot <bparrot@ti.com>
Subject: [Patch 0/2] media: ti-vpe: Add the VIP driver
Date: Fri, 22 May 2020 17:54:10 -0500	[thread overview]
Message-ID: <20200522225412.29440-1-bparrot@ti.com> (raw)

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	other threads:[~2020-05-22 22:54 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-22 22:54 Benoit Parrot [this message]
2020-05-22 22:54 ` [Patch 1/2] dt-binbings: media: ti-vpe: Document the VIP driver Benoit Parrot
2020-05-28 23:39   ` Rob Herring
2020-05-29 16:45     ` Benoit Parrot
2020-05-22 22:54 ` [Patch 2/2] media: ti-vpe: Add " Benoit Parrot
2020-05-26 11:48   ` Hans Verkuil
2020-05-26 21:57     ` Benoit Parrot
2020-05-28  8:09       ` Hans Verkuil

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200522225412.29440-1-bparrot@ti.com \
    --to=bparrot@ti.com \
    --cc=devicetree@vger.kernel.org \
    --cc=hverkuil@xs4all.nl \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=robh+dt@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).