Hi, Hans, > On 25/04/2022 12:16, Nas Chung wrote: >> The wave5 codec is a stateful encoder/decoder. >> It is found on the J721S2 SoC, JH7100 SoC, ssd202d SoC. Etc.. >> But current test report is based on J721S2 SoC. >> >> The driver currently supports V4L2_PIX_FMT_HEVC, V4L2_PIX_FMT_H264. >> >> This driver has so far been tested on J721S2 EVM board and pre-silicon FPGA. >> >> Testing on J721S2 EVM board shows it working fine both decoder and encoder. >> The driver is successfully working with gstreamer v4l2 good-plugin without any modification. >> >> Testing on FPGA also shows it working fine, though the FPGA uses polled interrupts and copied buffers between the host and it's on board RAM. >> >> The wave5 driver will be updated to support various EXT_CTRL encoder interface. > Please note that for some unknown reason neither v6 nor v7 ever reached the > linux-media mailinglist. Can you try to repost, this time just to the mailinglist > and with a CC to me? > > I have seen this problem before but it was never clear why linux-media would > reject it. If you have an alternative email address you can email from, then > you can try that as well. I think my email client have a problem. I will change the email client and repost it with the latest version test report. Should i rename it for PATCH V8? Thanks. Nas. > >> v4l2-compliance tests from J721S2: >> >> # v4l2-compliance -d0 >> v4l2-compliance SHA: not available, 64 bits > You must compile v4l2-compliance from the v4l-utils git repo. You can tell because > the SHA will be shown. That way I can be certain you tested with the latest > v4l2-compliance. > >> Compliance test for vpu-dec device /dev/video0: >> >> Driver Info: >> Driver name : vpu-dec >> Card type : vpu-dec >> Bus info : platform:vpu-dec >> Driver version : 5.10.100 > 5.10 is really quite old, is it possible to test with a newer kernel? > > Regards, > > Hans > >> 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 >> Detected Stateful Decoder >> >> 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 (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: 2 Private Controls: 1 >> >> Format ioctls: >> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK >> test VIDIOC_G/S_PARM: OK (Not Supported) >> 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 >> test Scaling: OK >> >> Codec ioctls: >> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) >> test VIDIOC_G_ENC_INDEX: OK (Not Supported) >> test VIDIOC_(TRY_)DECODER_CMD: OK >> >> Buffer ioctls: >> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK >> test VIDIOC_EXPBUF: OK >> test Requests: OK (Not Supported) >> >> Total for vpu-dec device /dev/video0: 44, Succeeded: 44, Failed: 0, Warnings: 0 >> >> # v4l2-compliance -d1 >> v4l2-compliance SHA: not available, 64 bits >> >> Compliance test for vpu-enc device /dev/video1: >> >> Driver Info: >> Driver name : vpu-enc >> Card type : vpu-enc >> Bus info : platform:vpu-enc >> Driver version : 5.10.100 >> 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 >> Detected Stateful Encoder >> >> Required ioctls: >> test VIDIOC_QUERYCAP: OK >> >> Allow for multiple opens: >> test second /dev/video1 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 (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: 15 Private Controls: 0 >> >> Format ioctls: >> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK >> warn: ../../../v4l-utils-1.18.1/utils/v4l2-compliance/v4l2-test-formats.cpp(1320): S_PARM is supported for buftype 2, but not for ENUM_FRAMEINTERVALS >> warn: ../../../v4l-utils-1.18.1/utils/v4l2-compliance/v4l2-test-formats.cpp(1320): S_PARM is supported for buftype 10, 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 >> test Composing: OK (Not Supported) >> test Scaling: OK >> >> 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) >> >> Total for vpu-enc device /dev/video1: 44, Succeeded: 44, Failed: 0, Warnings: 2 >> >> changes since v6: >> >> * update TODO file >> * get sram info from device tree >> >> changes since v5: >> >> * support NV12/NV21 pixelformat for encoder and decoder >> * handle adnormal exit and EOS >> >> changes since v4: >> >> * refactor functions in wave5-hw and fix bug reported by Daniel Palmer >> * rename functions and variables to better names >> * change variable types such as replacing s32 with u32 and int with bool as appropriate >> >> changes since v3: >> >> * Fixing all issues commented by Dan Carpenter >> * Change file names to have wave5- prefix >> * In wave5_vpu_probe, enable the clocks before reading registers, as commented from Daniel Palmer >> * Add more to the TODO list, >> >> changes since v2: >> >> Main fixes includes: >> * change the yaml and dirver code to support up to 4 clks (instead of one) >> * fix Kconfig format >> * remove unneeded cast, >> * change var types >> * change var names, func names >> * checkpatch fixes >> >> changes since v1: >> >> Fix chanes due to comments from Ezequiel and Dan Carpenter. Main fixes inclueds: >> * move all files to one dir 'wave5' >> * replace private error codes with standart error codes >> * fix extra spaces >> * various checkpatch fixes >> * replace private 'DPRINTK' macro with standart 'dev_err/dbg ..' >> * fix error handling >> * add more possible fixes to the TODO file >> >> >> Dafna Hirschfeld (1): >> staging: media: wave5: Add the vdi layer >> >> Nas Chung (3): >> staging: media: wave5: Add vpuapi layer >> staging: media: wave5: Add the v4l2 layer >> staging: media: wave5: Add TODO file >> >> Robert Beckett (2): >> dt-bindings: media: staging: wave5: add yaml devicetree bindings >> media: wave5: Add wave5 driver to maintainers file >> >> .../bindings/staging/media/cnm,wave.yaml | 73 + >> MAINTAINERS | 9 + >> drivers/staging/media/Kconfig | 2 + >> drivers/staging/media/Makefile | 1 + >> drivers/staging/media/wave5/Kconfig | 12 + >> drivers/staging/media/wave5/Makefile | 10 + >> drivers/staging/media/wave5/TODO | 34 + >> drivers/staging/media/wave5/wave5-hw.c | 3405 +++++++++++++++++ >> drivers/staging/media/wave5/wave5-regdefine.h | 655 ++++ >> drivers/staging/media/wave5/wave5-vdi.c | 260 ++ >> drivers/staging/media/wave5/wave5-vdi.h | 81 + >> drivers/staging/media/wave5/wave5-vpu-dec.c | 1385 +++++++ >> drivers/staging/media/wave5/wave5-vpu-enc.c | 1532 ++++++++ >> drivers/staging/media/wave5/wave5-vpu.c | 381 ++ >> drivers/staging/media/wave5/wave5-vpu.h | 73 + >> drivers/staging/media/wave5/wave5-vpuapi.c | 1049 +++++ >> drivers/staging/media/wave5/wave5-vpuapi.h | 1144 ++++++ >> drivers/staging/media/wave5/wave5-vpuconfig.h | 91 + >> drivers/staging/media/wave5/wave5-vpuerror.h | 455 +++ >> drivers/staging/media/wave5/wave5.h | 82 + >> 20 files changed, 10734 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/staging/media/cnm,wave.yaml >> create mode 100644 drivers/staging/media/wave5/Kconfig >> create mode 100644 drivers/staging/media/wave5/Makefile >> create mode 100644 drivers/staging/media/wave5/TODO >> create mode 100644 drivers/staging/media/wave5/wave5-hw.c >> create mode 100644 drivers/staging/media/wave5/wave5-regdefine.h >> create mode 100644 drivers/staging/media/wave5/wave5-vdi.c >> create mode 100644 drivers/staging/media/wave5/wave5-vdi.h >> create mode 100644 drivers/staging/media/wave5/wave5-vpu-dec.c >> create mode 100644 drivers/staging/media/wave5/wave5-vpu-enc.c >> create mode 100644 drivers/staging/media/wave5/wave5-vpu.c >> create mode 100644 drivers/staging/media/wave5/wave5-vpu.h >> create mode 100644 drivers/staging/media/wave5/wave5-vpuapi.c >> create mode 100644 drivers/staging/media/wave5/wave5-vpuapi.h >> create mode 100644 drivers/staging/media/wave5/wave5-vpuconfig.h >> create mode 100644 drivers/staging/media/wave5/wave5-vpuerror.h >> create mode 100644 drivers/staging/media/wave5/wave5.h