On Fri, Mar 9, 2018 at 4:45 AM, Hans Verkuil <hverkuil@xxxxxxxxx> wrote: > Hi Matt, > > This is looking good. One request before I merge: please run the > 'v4l2-compliance -s -f' utility and post the result here. > > I don't think I've asked you to do that before (or if I did, I couldn't > find it in my mail archive). > > It should run without failures. > > Use the latest version from the git repo: https://git.linuxtv.org/v4l-utils.git/ > > ./bootstrap.sh; ./configure; make; sudo make install Heh so not exactly no failures. Suspect a lot of these are due to the weird small 8x8 pixel input, and the fact it doesn't support modes a typical video capture device would. v4l2-compliance SHA : 14ce03c18ef67aa7a3d5781f015be855fd43839c Compliance test for device /dev/video0: Driver Info: Driver name : video-i2c Card type : I2C 2-105 Transport Video Bus info : I2C:2-105 Driver version : 4.14.11 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/video0 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 (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: 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 (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 (Input 0): 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 (Input 0): 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 (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 (Not Supported) Test input 0: Streaming ioctls: test read/write: OK fail: v4l2-test-buffers.cpp(248): g_field() == V4L2_FIELD_ANY fail: v4l2-test-buffers.cpp(658): buf.check(q, last_seq) fail: v4l2-test-buffers.cpp(928): captureBufs(node, q, m2m_q, frame_count, false) test MMAP: FAIL fail: v4l2-test-buffers.cpp(1028): can_stream && ret != EINVAL test USERPTR: FAIL test DMABUF: Cannot test, specify --expbuf-device Stream using all formats: test MMAP for Format Y12 , Frame Size 8x8@10.00 Hz: fail: v4l2-test-buffers.cpp(1268): q.reqbufs(node, 3) Stride 0, Field None: FAIL fail: v4l2-test-buffers.cpp(1472): fmt.g_sizeimage() <= size fail: v4l2-test-buffers.cpp(1268): q.reqbufs(node, 3) Stride 80, Field None: FAIL fail: v4l2-test-buffers.cpp(1268): q.reqbufs(node, 3) Stride 0, Field Top: FAIL fail: v4l2-test-buffers.cpp(1472): fmt.g_sizeimage() <= size fail: v4l2-test-buffers.cpp(1268): q.reqbufs(node, 3) Stride 80, Field None: FAIL fail: v4l2-test-buffers.cpp(1268): q.reqbufs(node, 3) Stride 0, Field Bottom: FAIL fail: v4l2-test-buffers.cpp(1472): fmt.g_sizeimage() <= size fail: v4l2-test-buffers.cpp(1268): q.reqbufs(node, 3) Stride 80, Field None: FAIL fail: v4l2-test-buffers.cpp(1268): q.reqbufs(node, 3) Stride 0, Field Interlaced: FAIL fail: v4l2-test-buffers.cpp(1472): fmt.g_sizeimage() <= size fail: v4l2-test-buffers.cpp(1268): q.reqbufs(node, 3) Stride 80, Field None: FAIL fail: v4l2-test-buffers.cpp(1268): q.reqbufs(node, 3) Stride 0, Field Sequential Top-Bottom: FAIL fail: v4l2-test-buffers.cpp(1472): fmt.g_sizeimage() <= size fail: v4l2-test-buffers.cpp(1268): q.reqbufs(node, 3) Stride 80, Field None: FAIL fail: v4l2-test-buffers.cpp(1268): q.reqbufs(node, 3) Stride 0, Field Sequential Bottom-Top: FAIL fail: v4l2-test-buffers.cpp(1472): fmt.g_sizeimage() <= size fail: v4l2-test-buffers.cpp(1268): q.reqbufs(node, 3) Stride 80, Field None: FAIL fail: v4l2-test-buffers.cpp(1268): q.reqbufs(node, 3) Stride 0, Field Alternating: FAIL fail: v4l2-test-buffers.cpp(1472): fmt.g_sizeimage() <= size fail: v4l2-test-buffers.cpp(1268): q.reqbufs(node, 3) Stride 80, Field None: FAIL fail: v4l2-test-buffers.cpp(1268): q.reqbufs(node, 3) Stride 0, Field Interlaced Top-Bottom: FAIL fail: v4l2-test-buffers.cpp(1472): fmt.g_sizeimage() <= size fail: v4l2-test-buffers.cpp(1268): q.reqbufs(node, 3) Stride 80, Field None: FAIL fail: v4l2-test-buffers.cpp(1268): q.reqbufs(node, 3) Stride 0, Field Interlaced Bottom-Top: FAIL fail: v4l2-test-buffers.cpp(1472): fmt.g_sizeimage() <= size fail: v4l2-test-buffers.cpp(1268): q.reqbufs(node, 3) Stride 80, Field None: FAIL Total: 64, Succeeded: 44, Failed: 20, Warnings: 0 > > Thanks! > > Hans > > On 08/03/18 19:21, Matt Ranostay wrote: >> Add support for video-i2c polling driver >> >> Changes from v1: >> * Switch to SPDX tags versus GPLv2 license text >> * Remove unneeded zeroing of data structures >> * Add video_i2c_try_fmt_vid_cap call in video_i2c_s_fmt_vid_cap function >> >> Changes from v2: >> * Add missing linux/kthread.h include that broke x86_64 build >> >> Changes from v3: >> * Add devicetree binding documents >> * snprintf check added >> * switched to per chip support based on devicetree or i2c client id >> * add VB2_DMABUF to io_modes >> * added entry to MAINTAINERS file switched to per chip support based on devicetree or i2c client id >> >> Changes from v4: >> * convert pointer from of_device_get_match_data() to long instead of int to avoid compiler warning >> >> Matt Ranostay (2): >> media: dt-bindings: Add bindings for panasonic,amg88xx >> media: video-i2c: add video-i2c driver >> >> .../bindings/media/i2c/panasonic,amg88xx.txt | 19 + >> MAINTAINERS | 6 + >> drivers/media/i2c/Kconfig | 9 + >> drivers/media/i2c/Makefile | 1 + >> drivers/media/i2c/video-i2c.c | 558 +++++++++++++++++++++ >> 5 files changed, 593 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/media/i2c/panasonic,amg88xx.txt >> create mode 100644 drivers/media/i2c/video-i2c.c >> >