Re: [PATCH v1 0/2] media: pci: AVMatrix HWS capture driver

Hans Verkuil
2026-02-09T12:53:21Z

Hi Ben,

I ran the patches through our media CI and I got a number of failures:

https://linux-media.pages.freedesktop.org/-/users/hverkuil/-/jobs/92826923/artifacts/report.htm

Looking at it it is mostly missing 'static' for several functions, and
some unused variables.

Can you take a look at these issues and post a v2?

Thank you!

Regards,

Hans

On 09/02/2026 12:47, Hans Verkuil wrote:
> On 08/02/2026 01:35, Ben Hoff wrote:
>> Hi all,
>>
>> Just following up on this new driver patch sent Jan 11.
>>
>> Happy to address review comments or adjust the approach if needed.
>>
>> I’m happy to maintain this driver going forward.
>
> It got lost in the flood of patches. Thank you for reminding me.
>
> I've delegated it to myself in patchwork, so I hope I'll have a review
> for you with two weeks tops. Ping me if you didn't hear from me after
> two weeks.
>
> Regards,
>
> Hans
>
>>
>> Thanks,
>> Ben
>>
>> On Sun, Jan 11, 2026 at 9:24 PM Ben Hoff <hoff.benjamin.k@gmail.com> wrote:
>>>
>>> Hi all,
>>>
>>> This series introduces an in-tree AVMatrix HWS PCIe capture driver.
>>> The driver supports up to four HDMI inputs and exposes the video capture
>>> path through V4L2. Audio support is intentionally omitted in this
>>> revision so the series can focus on the video pipeline and PCIe glue.
>>>
>>> Major pieces include:
>>> - PCI glue with capability discovery, BAR setup, interrupt handling,
>>> and power-management hooks.
>>> - A vb2-dma-contig based capture pipeline with DV timings support,
>>> per-channel controls, two-buffer management, and loss-of-signal
>>> recovery.
>>>
>>> The baseline GPL out-of-tree driver is available at:
>>> https://github.com/benhoff/hws/tree/baseline
>>> A vendor driver bundle is available at:
>>> https://www.acasis.com/pages/acasis-product-drivers
>>> The vendor is not involved in this upstreaming effort.
>>>
>>> Prior RFC posting: https://lore.kernel.org/lkml/20251027195638.481129-1-hoff.benjamin.k@gmail.com/
>>>
>>> Current status / open items:
>>> - `v4l2-compliance` passes for each video node, and I have exercised
>>> basic capture in OBS and run this driver in a steady state mode
>>> daily
>>>
>>> v4l2-compliance (from v4l-utils git, v4l2-compliance 1.32.0):
>>> v4l2-compliance 1.32.0, 64 bits, 64-bit time_t
>>>
>>> Compliance test for HwsCapture device /dev/video1:
>>>
>>> Driver Info:
>>> Driver name : HwsCapture
>>> Card type : AVMatrix HWS Capture 2
>>> Bus info : PCI:0000:17:00.0
>>> Driver version : 6.18.3
>>> Capabilities : 0x84200001
>>> Video Capture
>>> Streaming
>>> Extended Pix Format
>>> Device Capabilities
>>> Device Caps : 0x04200001
>>> Video Capture
>>> Streaming
>>> Extended Pix Format
>>>
>>> Required ioctls:
>>> test VIDIOC_QUERYCAP: OK
>>> test invalid ioctls: 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
>>>
>>> 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
>>> test VIDIOC_DV_TIMINGS_CAP: OK
>>> test VIDIOC_G/S_EDID: OK (Not Supported)
>>>
>>> Control ioctls (Input 0):
>>> info: checking v4l2_query_ext_ctrl of control 'User Controls' (0x00980001)
>>> info: checking v4l2_query_ext_ctrl of control 'Brightness' (0x00980900)
>>> info: checking v4l2_query_ext_ctrl of control 'Contrast' (0x00980901)
>>> info: checking v4l2_query_ext_ctrl of control 'Saturation' (0x00980902)
>>> info: checking v4l2_query_ext_ctrl of control 'Hue' (0x00980903)
>>> info: checking v4l2_query_ext_ctrl of control 'Brightness' (0x00980900)
>>> info: checking v4l2_query_ext_ctrl of control 'Contrast' (0x00980901)
>>> info: checking v4l2_query_ext_ctrl of control 'Saturation' (0x00980902)
>>> info: checking v4l2_query_ext_ctrl of control 'Hue' (0x00980903)
>>> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
>>> test VIDIOC_QUERYCTRL: OK
>>> info: checking control 'User Controls' (0x00980001)
>>> info: checking control 'Brightness' (0x00980900)
>>> info: checking control 'Contrast' (0x00980901)
>>> info: checking control 'Saturation' (0x00980902)
>>> info: checking control 'Hue' (0x00980903)
>>> test VIDIOC_G/S_CTRL: OK
>>> info: checking extended control 'User Controls' (0x00980001)
>>> info: checking extended control 'Brightness' (0x00980900)
>>> info: checking extended control 'Contrast' (0x00980901)
>>> info: checking extended control 'Saturation' (0x00980902)
>>> info: checking extended control 'Hue' (0x00980903)
>>> test VIDIOC_G/S/TRY_EXT_CTRLS: OK
>>> info: checking control event 'User Controls' (0x00980001)
>>> info: checking control event 'Brightness' (0x00980900)
>>> info: checking control event 'Contrast' (0x00980901)
>>> info: checking control event 'Saturation' (0x00980902)
>>> info: checking control event 'Hue' (0x00980903)
>>> warn: v4l2-test-controls.cpp(1159): V4L2_CID_DV_RX_POWER_PRESENT not found for input 0
>>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
>>> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
>>> Standard Controls: 5 Private Controls: 0
>>>
>>> Format ioctls (Input 0):
>>> info: found 1 formats for buftype 1
>>> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
>>> warn: v4l2-test-formats.cpp(1485): S_PARM is supported for buftype 1, 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
>>>
>>> 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):
>>> info: test buftype Video Capture
>>> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
>>> test CREATE_BUFS maximum buffers: OK
>>> test VIDIOC_REMOVE_BUFS: OK
>>> test VIDIOC_EXPBUF: OK
>>> test Requests: OK (Not Supported)
>>> test blocking wait: OK
>>>
>>> Test input 0:
>>>
>>> Stream using all formats:
>>> test MMAP for Format YUYV, Frame Size 640x480:
>>> Stride 1280, Field None: OK
>>> Stride 1344, Field None: OK
>>> test MMAP for Format YUYV, Frame Size 1920x1080:
>>> Stride 3840, Field None: OK
>>> Total for HwsCapture device /dev/video1: 51, Succeeded: 51, Failed: 0, Warnings: 2
>>>
>>>
>>> Thanks for taking a look!
>>>
>>> Ben
>>>
>>> Ben Hoff (2):
>>> media: pci: add AVMatrix HWS capture driver
>>> MAINTAINERS: add entry for AVMatrix HWS driver
>>>
>>> MAINTAINERS | 6 +
>>> drivers/media/pci/Kconfig | 1 +
>>> drivers/media/pci/Makefile | 1 +
>>> drivers/media/pci/hws/Kconfig | 12 +
>>> drivers/media/pci/hws/Makefile | 4 +
>>> drivers/media/pci/hws/hws.h | 175 +++
>>> drivers/media/pci/hws/hws_irq.c | 268 ++++
>>> drivers/media/pci/hws/hws_irq.h | 10 +
>>> drivers/media/pci/hws/hws_pci.c | 722 +++++++++++
>>> drivers/media/pci/hws/hws_reg.h | 144 +++
>>> drivers/media/pci/hws/hws_v4l2_ioctl.c | 755 ++++++++++++
>>> drivers/media/pci/hws/hws_v4l2_ioctl.h | 38 +
>>> drivers/media/pci/hws/hws_video.c | 1542 ++++++++++++++++++++++++
>>> drivers/media/pci/hws/hws_video.h | 29 +
>>> 14 files changed, 3707 insertions(+)
>>> create mode 100644 drivers/media/pci/hws/Kconfig
>>> create mode 100644 drivers/media/pci/hws/Makefile
>>> create mode 100644 drivers/media/pci/hws/hws.h
>>> create mode 100644 drivers/media/pci/hws/hws_irq.c
>>> create mode 100644 drivers/media/pci/hws/hws_irq.h
>>> create mode 100644 drivers/media/pci/hws/hws_pci.c
>>> create mode 100644 drivers/media/pci/hws/hws_reg.h
>>> create mode 100644 drivers/media/pci/hws/hws_v4l2_ioctl.c
>>> create mode 100644 drivers/media/pci/hws/hws_v4l2_ioctl.h
>>> create mode 100644 drivers/media/pci/hws/hws_video.c
>>> create mode 100644 drivers/media/pci/hws/hws_video.h
>>>
>>> --
>>> 2.51.0
>>
>
>