Re: [PATCH v8 0/10] Output raw touch data via V4L2

From: Chris Healy
Date: Fri Jul 22 2016 - 22:10:15 EST


I'm not Nick, but I'm testing his patches. ;-) Here's what I'm
getting from v4l2-compliance with his patches:

root@RDU2:/mnt/disk ./v4l2-compliance -a -f -d /dev/v4l-touch0
Driver Info:
Driver name : rmi4_f54
Card type : Synaptics RMI4 Touch Sensor
Bus info : rmi4:rmi4-00.fn54
Driver version: 4.7.0
Capabilities : 0x95200001
Video Capture
Touch Capture
Read/Write
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x15200001
Video Capture
Touch Capture
Read/Write
Streaming
Extended Pix Format

Compliance test for device /dev/v4l-touch0 (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
test VIDIOC_G/S_AUDIO: OK (Not Supported)
Inputs: 5 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)

Test input 0:

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

Test input 1:

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

Test input 2:

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

Test input 3:

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

Test input 4:

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

Test input 0:

Stream using all formats:
test MMAP for Format TD16, Frame Size 60x36:
Stride 120, Field None: OK
test MMAP for Format TD08, Frame Size 60x36:
Stride 120, Field None: OK
test MMAP for Format TU16, Frame Size 60x36:
Stride 120, Field None: OK
Test input 1:

Stream using all formats:
test MMAP for Format TD16, Frame Size 60x36:
Stride 120, Field None: OK
test MMAP for Format TD08, Frame Size 60x36:
Stride 120, Field None: OK
test MMAP for Format TU16, Frame Size 60x36:
Stride 120, Field None: OK
Test input 2:

Stream using all formats:
test MMAP for Format TD16, Frame Size 60x36:
Stride 120, Field None: OK
test MMAP for Format TD08, Frame Size 60x36:
Stride 120, Field None: OK
test MMAP for Format TU16, Frame Size 60x36:
Stride 120, Field None: OK
Test input 3:

Stream using all formats:
test MMAP for Format TD16, Frame Size 60x36:
Stride 120, Field None: OK
test MMAP for Format TD08, Frame Size 60x36:
Stride 120, Field None: OK
test MMAP for Format TU16, Frame Size 60x36:
Stride 120, Field None: OK
Test input 4:

Stream using all formats:
test MMAP for Format TD16, Frame Size 60x36:
Stride 120, Field None: OK
test MMAP for Format TD08, Frame Size 60x36:
Stride 120, Field None: OK
test MMAP for Format TU16, Frame Size 60x36:
Stride 120, Field None: OK

Total: 141, Succeeded: 141, Failed: 0, Warnings: 0

On Wed, Jul 20, 2016 at 12:48 AM, Hans Verkuil <hverkuil@xxxxxxxxx> wrote:
> Hi Nick,
>
> This series looks good. I plan on taking it for 4.9. I have to wait until
> 4.8-rc1 is out and merged in our media_tree repo before I can make the pull
> request, probably in about 3 weeks from now.
>
> One request: can you post the 'v4l2-compliance -a -f' output, using the latest
> v4l2-compliance code with your patch on top.
>
> I'd like to make sure all input and format combinations are working as they should.
>
> Regards,
>
> Hans
>
> On 07/18/2016 11:10 PM, Nick Dyer wrote:
>> This is a series of patches to add output of raw touch diagnostic data via V4L2
>> to the Atmel maXTouch and Synaptics RMI4 drivers.
>>
>> It's a rewrite of the previous implementation which output via debugfs: it now
>> uses a V4L2 device in a similar way to the sur40 driver.
>>
>> We have a utility which can read the data and display it in a useful format:
>> https://github.com/ndyer/heatmap/commits/heatmap-v4l
>>
>> Changes in v8:
>> - Split out docs changes, rework in RST/Sphinx, and rebase against docs-next
>> - Update for changes to vb2_queue alloc_ctxs
>> - Rebase against git://linuxtv.org/media_tree.git and re-test
>>
>> Changes in v7:
>> - Tested by Andrew Duggan and Chris Healy.
>> - Update bus_info to add "rmi4:" bus.
>> - Fix code style issues in sur40 changes.
>>
>> Changes in v6:
>> - Remove BUF_TYPE_TOUCH_CAPTURE, as discussed with Hans V touch devices will
>> use BUF_TYPE_VIDEO_CAPTURE.
>> - Touch devices should now register CAP_VIDEO_CAPTURE: CAP_TOUCH just says that
>> this is a touch device, not a video device, but otherwise it acts the same.
>> - Add some code to v4l_s_fmt() to set sensible default values for fields not
>> used by touch.
>> - Improve naming/doc of RMI4 F54 report types.
>> - Various minor DocBook fixes, and split to separate patch.
>> - Update my email address.
>> - Rework sur40 changes so that PIX_FMT_GREY is supported for backward
>> compatibility. Florian is it possible for you to test?
>>
>> Changes in v5 (Hans Verkuil review):
>> - Update v4l2-core:
>> - Add VFL_TYPE_TOUCH, V4L2_BUF_TYPE_TOUCH_CAPTURE and V4L2_CAP_TOUCH
>> - Change V4L2_INPUT_TYPE_TOUCH_SENSOR to V4L2_INPUT_TYPE_TOUCH
>> - Improve DocBook documentation
>> - Add FMT definitions for touch data
>> - Note this will need the latest version of the heatmap util
>> - Synaptics RMI4 driver:
>> - Remove some less important non full frame report types
>> - Switch report type names to const char * array
>> - Move a static array to inside context struct
>> - Split sur40 changes to a separate commit
>>
>> Changes in v4:
>> - Address nits from the input side in atmel_mxt_ts patches (Dmitry Torokhov)
>> - Add Synaptics RMI4 F54 support patch
>>
>> Changes in v3:
>> - Address V4L2 review comments from Hans Verkuil
>> - Run v4l-compliance and fix all issues - needs minor patch here:
>> https://github.com/ndyer/v4l-utils/commit/cf50469773f
>>
>> Changes in v2:
>> - Split pixfmt changes into separate commit and add DocBook
>> - Introduce VFL_TYPE_TOUCH_SENSOR and /dev/v4l-touch
>> - Remove "single node" support for now, it may be better to treat it as
>> metadata later
>> - Explicitly set VFL_DIR_RX
>> - Fix Kconfig
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-media" in
>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>