Thread (11 messages) 11 messages, 3 authors, 2016-02-26

[PATCH v5 0/8] Add MT8173 Video Encoder Driver and VPU Driver

From: tiffany.lin@mediatek.com (tiffany lin)
Date: 2016-02-24 10:53:56
Also in: linux-devicetree, linux-media, linux-mediatek, lkml

On Wed, 2016-02-24 at 09:30 +0100, Hans Verkuil wrote:
Hi Tiffany,

On 02/24/16 09:23, tiffany lin wrote:
quoted
Hi Hans,

On Tue, 2016-02-23 at 09:47 +0100, Hans Verkuil wrote:
quoted
On 02/23/16 09:11, Tiffany Lin wrote:
quoted
==============
 Introduction
==============

The purpose of this series is to add the driver for video codec hw embedded in the Mediatek's MT8173 SoCs.
Mediatek Video Codec is able to handle video encoding of in a range of formats.

This patch series also include VPU driver. Mediatek Video Codec driver rely on VPU driver to load,
communicate with VPU.

Internally the driver uses videobuf2 framework and MTK IOMMU and MTK SMI.
MTK IOMMU[1] and MTK SMI[2] have not yet been merged, but we wanted to start discussion about the driver
earlier so it could be merged sooner.

[1]https://patchwork.kernel.org/patch/8335461/
[2]https://patchwork.kernel.org/patch/7596181/
<snip>
quoted
v4l2-compliance test output:
localhost ~ # /usr/bin/v4l2-compliance -d /dev/video1
Driver Info:
        Driver name   : mtk-vcodec-enc
        Card type     : platform:mt8173
        Bus info      : platform:mt8173
        Driver version: 4.4.0
        Capabilities  : 0x84204000
                Video Memory-to-Memory Multiplanar
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps   : 0x04204000
                Video Memory-to-Memory Multiplanar
                Streaming
                Extended Pix Format

Compliance test for device /dev/video1 (not using libv4l2):

Required ioctls:
        test VIDIOC_QUERYCAP: OK

Allow for multiple opens:
        test second video open: OK
        test VIDIOC_QUERYCAP: OK
        test VIDIOC_G/S_PRIORITY: OK

Debug ioctls:
        test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
        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_QUERYCTRL/MENU: 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: 12 Private Controls: 0

        Format ioctls:
                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)

        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
                test VIDIOC_EXPBUF: OK

Total: 38, Succeeded: 38, Failed: 0, Warnings: 0
Nice!

Can you try 'v4l2-compliance -s'? Note that this may not work since I know
that v4l2-compliance doesn't work all that well with codecs, but I am
curious what the output is when you try streaming.

Don't bother trying to chase down reported failures, those are likely from
v4l2-compliance itself. It is something I would like to improve, but -ENOTIME.
When I try to run 'v4l2-compliance -d /dev/video1 -s, I got follow
output.
I use v4.4-rc5 kernel and v4l-utils 1.6 version.
Can you compile v4l2-compliance straight from the v4l-utils.git master branch?
Version 1.6 is too old, and for proper compliance testing you should always use
the master branch. It probably won't matter for this -s test, but for the
regular test (without -s) it does make a difference.

If nothing else, using the master branch will make it easier for me to match up
the line numbers that v4l2-compliance reports to the actual source.
Sorry, our development branch default get
"http://linuxtv.org/downloads/v4l-utils/v4l-utils-1.6.0.tar.bz2"
I try to change to use master branch.
I got following output:


Streaming ioctls:
        test read/write: OK (Not Supported)
                fail: v4l2-test-buffers.cpp(970): ret != EINVAL
        test MMAP: FAIL
                warn: v4l2-test-buffers.cpp(278): buf.length=1,
vp->length=1024, ff9a42a8/ff9a4270, ff9a4284/ff9a429c/ff9a42a4
fail: v4l2-test-buffers.cpp(1032): ret && ret != ENOTTY
                fail: v4l2-test-buffers.cpp(1098): setupUserPtr(node, q)
        test USERPTR: FAIL
        test DMABUF: Cannot test, specify --expbuf-device


After change to use master branch, VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF:
test FAIL.

I got this error output, do I need to fix this issue. I need to figure
out this.

                warn: v4l2-test-buffers.cpp(467): mmap_valid 1
warn: v4l2-test-buffers.cpp(278): buf.length=1, vp->length=1024,
ff9a40b8/ff9a4080, ff9a4094/ff9a40ac/ff9a40b4          warn:
v4l2-test-buffers.cpp(475): mmap_valid 2          warn:
v4l2-test-buffers.cpp(480): userptr_valid 1          warn:
v4l2-test-buffers.cpp(278): buf.length=1, vp->length=1024,
ff9a40b8/ff9a4080, ff9a4094/ff9a40ac/ff9a40b4          warn:
v4l2-test-buffers.cpp(488): userptr_valid 2               warn:
v4l2-test-buffers.cpp(493): dmabuf_valid  1          warn:
v4l2-test-buffers.cpp(278): buf.length=1, vp->length=1024,
ff9a40b8/ff9a4080, ff9a4094/ff9a40ac/ff9a40b4          warn:
v4l2-test-buffers.cpp(501): dmabuf_valid  2               warn:
v4l2-test-buffers.cpp(278): buf.length=1, vp->length=1024,
ff9a40b8/ff9a4080, ff9a4094/ff9a40ac/ff9a40b4             warn:
v4l2-test-buffers.cpp(278): buf.length=1, vp->length=1024,
ff9a40b8/ff9a4080, ff9a4094/ff9a40ac/ff9a40b4          warn:
v4l2-test-buffers.cpp(278): buf.length=1, vp->length=1024,
ff9a40b8/ff9a4080, ff9a4094/ff9a40ac/ff9a40b4             fail:
v4l2-test-buffers.cpp(564): check_0(crbufs.reserved,
sizeof(crbufs.reserved))
                test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL
                warn: v4l2-test-buffers.cpp(597): ....2         warn:
v4l2-test-buffers.cpp(597): ....2         test VIDIOC_EXPBUF: OK


best regards,
Tiffany

Thanks!

	Hans
quoted
Streaming ioctls:
        test read/write: OK (Not Supported)
fail: ../../../v4l-utils-1.6.0/utils/v4l2-compliance/v4l2-test-buffers.cpp(332): buf.querybuf(node, i) fail: ../../../v4l-utils-1.6.0/utils/v4l2-compliance/v4l2-test-buffers.cpp(868): testQueryBuf(node, cur_fmt.type, q.g_buffers())
        test MMAP: FAIL
fail: ../../../v4l-utils-1.6.0/utils/v4l2-compliance/v4l2-test-buffers.cpp(923): ret && ret != ENOTTY

fail: ../../../v4l-utils-1.6.0/utils/v4l2-compliance/v4l2-test-buffers.cpp(988): setupUserPtr(node, q)
        test USERPTR: FAIL
        test DMABUF: Cannot test, specify --expbuf-device

best regards,
Tiffany
quoted
Regards,

	Hans

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help