On 2/17/20 4:13 PM, Michael Tretter wrote: > Hello, > > these are a several patches for the allegro-dvt driver that have piled up over > the last few month while I was improving my understanding of the codec. > > Patches 1 to 9 fix errors in the interaction with the mcu. This includes > better interpretation of return values from the firmware, wrong fields in the > mails, wrong values in the fields and an error when resetting the mcu. > > Patches 10 to 14 wire up more controls and allow user space applications to > control the framerate and the quality of the codec. > > Patches 15 and 16 enable the firmware to take care of the buffer scheduling > and allow more parallelism inside the firmware. Please have a close look at > patch 16, because it changes the behavior of the driver to finish the m2m_job > before the driver returns the v4l2_buffers. > > Patches 17 and 18 start work to restructure how to create the mails that are > sent to the firmware, because different firmware versions expect different > mail formats and, thus, I need additional code to generate mails if I want to > support different firmware versions. Posted comments for patches 14 and 16. Also note the 'kbuild test robot' post for patch 15. I also get a number of warnings/checks when checkpatch.pl --strict over the patch series (and even one ERROR). Some can be ignored, but there are others that can be easily fixed with some reformatting. Regards, Hans > > This is the v4l-compliance test result: > > v4l2-compliance SHA: b62d322d4401e6b6e5cbd78cedad9eb69dac1324, 64 bits, 64-bit time_t > > Compliance test for allegro device /dev/video3: > > Driver Info: > Driver name : allegro > Card type : Allegro DVT Video Encoder > Bus info : platform:a0009000.video-codec > Driver version : 5.6.0 > Capabilities : 0x84208000 > Video Memory-to-Memory > Streaming > Extended Pix Format > Device Capabilities > Device Caps : 0x04208000 > Video Memory-to-Memory > Streaming > Extended Pix Format > Detected Stateful Encoder > > Required ioctls: > test VIDIOC_QUERYCAP: OK > > Allow for multiple opens: > test second /dev/video3 open: OK > test VIDIOC_QUERYCAP: OK > test VIDIOC_G/S_PRIORITY: OK > test for unlimited opens: OK > > test invalid ioctls: OK > Debug ioctls: > test VIDIOC_DBG_G/S_REGISTER: OK > 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_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: 16 Private Controls: 0 > > Format ioctls: > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK > warn: v4l2-test-formats.cpp(1329): S_PARM is supported for buftype 2, but not for ENUM_FRAMEINTERVALS > 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 > 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 Requests: OK (Not Supported) > > Test input 0: > > Streaming ioctls: > test read/write: OK (Not Supported) > test blocking wait: OK > Video Capture: Captured 59 buffers > test MMAP (select): OK > Video Capture: Captured 59 buffers > test MMAP (epoll): OK > test USERPTR (select): OK (Not Supported) > test DMABUF: Cannot test, specify --expbuf-device > > Total for allegro device /dev/video3: 50, Succeeded: 50, Failed: 0, Warnings: 1 > > Michael > > Michael Tretter (18): > media: allegro: print message on mcu error > media: allegro: fail encoding only on actual errors > media: allegro: fix type of gop_length in channel_create message > media: allegro: remove unknown39 field from create_channel > media: allegro: start a GOP with an IDR frame > media: allegro: fix calculation of CPB size > media: allegro: fix reset if WAKEUP has not been set properly > media: allegro: extract mcu and codec address calculation > media: allegro: warn if response message has an unexpected size > media: allegro: skip filler data if possible > media: allegro: make frame rate configurable > media: allegro: make QP configurable > media: allegro: read bitrate mode directly from control > media: allegro: handle dependency of bitrate and bitrate_peak > media: allegro: verify source and destination buffer in VCU response > media: allegro: pass buffers through firmware > media: allegro: move mail definitions to separate file > media: allegro: create new struct for channel parameters > > drivers/staging/media/allegro-dvt/Makefile | 2 +- > .../staging/media/allegro-dvt/allegro-core.c | 808 ++++++++++-------- > .../staging/media/allegro-dvt/allegro-mail.c | 37 + > .../staging/media/allegro-dvt/allegro-mail.h | 267 ++++++ > 4 files changed, 738 insertions(+), 376 deletions(-) > create mode 100644 drivers/staging/media/allegro-dvt/allegro-mail.c > create mode 100644 drivers/staging/media/allegro-dvt/allegro-mail.h >