Hi Stefan Firstly a huge thank you for picking this up - it's been on my to-do list for ages, and just hasn't made it to the top. On Fri, 28 Jun 2019 at 09:06, Hans Verkuil <hverkuil@xxxxxxxxx> wrote: > > Hi Stefan, > > On 6/27/19 8:55 PM, Stefan Wahren wrote: > > This is an attempt to help Dave Stevenson to get all the fixes and > > improvements of the bcm2835-camera driver into mainline. > > > > Mostly i only polished the commit logs for upstream. > > > > The series based on the latest bugfix V2 of staging: bcm2835-camera: Resto= > > re > > return behavior of ctrl_set_bitrate(). > > Thank you for working on this. > > Three high-level questions: > > 1) Can you post the output of 'v4l2-compliance -s' using the latest v4l2-compliance > from https://git.linuxtv.org/v4l-utils.git ? I'm interested to see what the > status is of this driver w.r.t. the compliance tests. Hi Hans. Running it against the downstream driver (which should be nearly identical based on this set of patches), 4.19, on a Pi4 I get pi@raspberrypi:~/v4l-utils/utils/v4l2-compliance $ ./v4l2-compliance -s v4l2-compliance SHA: b16f9e945d74aa552abdd6f873821cb77faaf13a, 32 bits Compliance test for bm2835 mmal device /dev/video0: Driver Info: Driver name : bm2835 mmal Card type : mmal service 16.1 Bus info : platform:bcm2835-v4l2 Driver version : 4.19.56 Capabilities : 0x85200005 Video Capture Video Overlay Read/Write Streaming Extended Pix Format Device Capabilities Device Caps : 0x05200005 Video Capture Video Overlay 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 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 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: 33 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 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 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 Requests: OK (Not Supported) Test input 0: Streaming ioctls: test read/write: OK test blocking wait: OK warn: v4l2-test-buffers.cpp(1429): Can free buffers even if still mmap()ed test MMAP (no poll): OK warn: v4l2-test-buffers.cpp(1429): Can free buffers even if still mmap()ed test MMAP (select): OK warn: v4l2-test-buffers.cpp(1429): Can free buffers even if still mmap()ed test MMAP (epoll): OK test USERPTR (no poll): OK test USERPTR (select): OK test DMABUF (no poll): OK (Not Supported) test DMABUF (select): OK (Not Supported) Total for bm2835 mmal device /dev/video0: 53, Succeeded: 53, Failed: 0, Warnings: 3 The warnings are because downstream we have an early version of "media: vb2: Allow reqbufs(0) with "in use" MMAP buffers" that doesn't set the flag to userspace. I need to revert that and apply the accepted one (it's not a clean cherrypick though). I do try and run compliance every few months because I'm aware that you frequently add extra tests. > 2) What is the status of this driver from your point of view? What is needed to > get it out of staging? I think the main issue is the dependency on vchiq. I'm hoping that the V4L2 side of this is now relatively clean, but it probably wants a full review when someone has the time. > 3) Out of curiosity: is this driver still valid for RPi4? Yes, it is still valid. The imaging side hasn't changed significantly, it just runs a bit faster. Dave > Regards, > > Hans > > > > > Dave Stevenson (31): > > staging: bcm2835-camera: Ensure H264 header bytes get a sensible > > timestamp > > staging: bcm2835-camera: Check the error for REPEAT_SEQ_HEADER > > staging: bcm2835-camera: Replace spinlock protecting context_map with > > mutex > > staging: bcm2835-camera: Do not bulk receive from service thread > > staging: bcm2835-camera: Correctly denote key frames in encoded data > > staging: bcm2835-camera: Return early on errors > > staging: bcm2835-camera: Remove dead email addresses > > staging: bcm2835-camera: Fix comment style violations. > > staging: bcm2835-camera: Fix spacing around operators > > staging: bcm2835-camera: Reduce length of enum names > > staging: bcm2835-camera: Fix multiple line dereference errors > > staging: bcm2835-camera: Fix brace style issues. > > staging: bcm2835-camera: Fix missing lines between items > > staging: bcm2835-camera: Fix open parenthesis alignment > > staging: bcm2835-camera: Ensure all buffers are returned on disable > > staging: bcm2835-camera: Remove check of the number of buffers > > supplied > > staging: bcm2835-camera: Handle empty EOS buffers whilst streaming > > staging: bcm2835-camera: Set sequence number correctly > > staging: bcm2835-camera: Ensure timestamps never go backwards. > > staging: bcm2835-camera: Add multiple inclusion protection to headers > > staging: bcm2835-camera: Unify header inclusion defines > > staging: bcm2835-camera: Fix multiple assignments should be avoided > > staging: bcm2835-camera: Fix up mmal-parameters.h > > staging: bcm2835-camera: Use enums for max value in controls > > staging: bcm2835-camera: Correct V4L2_CID_COLORFX_CBCR behaviour > > staging: bcm2835-camera: Remove/amend some obsolete comments > > staging: mmal-vchiq: Avoid use of bool in structures > > staging: bcm2835-camera: Fix stride on RGB3/BGR3 formats > > staging: bcm2835-camera: Add sanity checks for queue_setup/CREATE_BUFS > > staging: bcm2835-camera: Set the field value within ach buffer > > staging: bcm2835-camera: Correct ctrl min/max/step/def to 64bit > > > > .../vc04_services/bcm2835-camera/bcm2835-camera.c | 378 ++++++++++++----= > > ----- > > .../vc04_services/bcm2835-camera/bcm2835-camera.h | 34 +- > > .../vc04_services/bcm2835-camera/controls.c | 184 +++++----- > > .../vc04_services/bcm2835-camera/mmal-common.h | 12 +- > > .../vc04_services/bcm2835-camera/mmal-encodings.h | 9 +- > > .../vc04_services/bcm2835-camera/mmal-msg-common.h | 9 +- > > .../vc04_services/bcm2835-camera/mmal-msg-format.h | 104 +++--- > > .../vc04_services/bcm2835-camera/mmal-msg-port.h | 133 ++++---- > > .../vc04_services/bcm2835-camera/mmal-msg.h | 150 ++++---- > > .../vc04_services/bcm2835-camera/mmal-parameters.h | 286 +++++++++------- > > .../vc04_services/bcm2835-camera/mmal-vchiq.c | 159 +++++---- > > .../vc04_services/bcm2835-camera/mmal-vchiq.h | 22 +- > > 12 files changed, 826 insertions(+), 654 deletions(-) > > > > =2D- > > 2.7.4 > > > _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel