aboutsummaryrefslogtreecommitdiffstats
path: root/sys/linux
diff options
context:
space:
mode:
Diffstat (limited to 'sys/linux')
-rw-r--r--sys/linux/dev_video4linux.txt55
-rw-r--r--sys/linux/dev_video4linux_amd64.const93
-rw-r--r--sys/linux/dev_video4linux_arm64.const93
-rw-r--r--sys/linux/dev_video4linux_vim2m.txt58
-rw-r--r--sys/linux/dev_video4linux_vim2m_amd64.const22
-rw-r--r--sys/linux/dev_video4linux_vim2m_arm64.const22
-rw-r--r--sys/linux/sys.txt2
7 files changed, 231 insertions, 114 deletions
diff --git a/sys/linux/dev_video4linux.txt b/sys/linux/dev_video4linux.txt
index 92fc34c7f..83aa76dd6 100644
--- a/sys/linux/dev_video4linux.txt
+++ b/sys/linux/dev_video4linux.txt
@@ -14,10 +14,13 @@ include <uapi/linux/v4l2-subdev.h>
include <uapi/linux/v4l2-mediabus.h>
include <uapi/linux/media-bus-format.h>
include <uapi/linux/v4l2-controls.h>
+include <uapi/linux/media.h>
resource fd_video[fd]
resource fd_dmabuf[fd]
resource fd_v4l2_buffer[fd]
+resource fd_media[fd]
+resource fd_request[fd]
syz_open_dev$video(dev ptr[in, string["/dev/video#"]], id intptr, flags flags[open_flags]) fd_video
syz_open_dev$video4linux(dev ptr[in, string["/dev/v4l-subdev#"]], id intptr, flags flags[open_flags]) fd_video
@@ -32,7 +35,6 @@ openat$vimc0(fd const[AT_FDCWD], file ptr[in, string["/dev/video0"]], flags cons
openat$vimc1(fd const[AT_FDCWD], file ptr[in, string["/dev/video1"]], flags const[O_RDWR], mode const[0]) fd_video
openat$vimc2(fd const[AT_FDCWD], file ptr[in, string["/dev/video2"]], flags const[O_RDWR], mode const[0]) fd_video
syz_open_dev$vivid(dev ptr[in, string["/dev/video#"]], id proc[3, 4], flags const[O_RDWR]) fd_video
-openat$vim2m(fd const[AT_FDCWD], file ptr[in, string["/dev/video35"]], flags const[O_RDWR], mode const[0]) fd_video
openat$vicodec0(fd const[AT_FDCWD], file ptr[in, string["/dev/video36"]], flags const[O_RDWR], mode const[0]) fd_video
openat$vicodec1(fd const[AT_FDCWD], file ptr[in, string["/dev/video37"]], flags const[O_RDWR], mode const[0]) fd_video
# TODO: there are some complex rules as to what ioctl's are applicable to what devices
@@ -45,17 +47,17 @@ syz_open_dev$cec(dev ptr[in, string["/dev/cec#"]], id proc[0, 4], flags const[O_
ioctl$VIDIOC_QUERYCAP(fd fd_video, cmd const[VIDIOC_QUERYCAP], arg ptr[out, v4l2_capability])
ioctl$VIDIOC_RESERVED(fd fd_video, cmd const[VIDIOC_RESERVED], arg const[0])
-ioctl$VIDIOC_ENUM_FMT(fd fd_video, cmd const[VIDIOC_ENUM_FMT], arg ptr[inout, v4l2_fmtdesc])
-ioctl$VIDIOC_G_FMT(fd fd_video, cmd const[VIDIOC_G_FMT], arg ptr[inout, v4l2_format])
-ioctl$VIDIOC_S_FMT(fd fd_video, cmd const[VIDIOC_S_FMT], arg ptr[inout, v4l2_format])
-ioctl$VIDIOC_REQBUFS(fd fd_video, cmd const[VIDIOC_REQBUFS], arg ptr[inout, v4l2_requestbuffers])
-ioctl$VIDIOC_QUERYBUF(fd fd_video, cmd const[VIDIOC_QUERYBUF], arg ptr[inout, v4l2_buffer])
+ioctl$VIDIOC_ENUM_FMT(fd fd_video, cmd const[VIDIOC_ENUM_FMT], arg ptr[inout, v4l2_fmtdesc[v4l2_buf_type]])
+ioctl$VIDIOC_G_FMT(fd fd_video, cmd const[VIDIOC_G_FMT], arg ptr[inout, v4l2_format[v4l2_buf_type]])
+ioctl$VIDIOC_S_FMT(fd fd_video, cmd const[VIDIOC_S_FMT], arg ptr[inout, v4l2_format[v4l2_buf_type]])
+ioctl$VIDIOC_REQBUFS(fd fd_video, cmd const[VIDIOC_REQBUFS], arg ptr[inout, v4l2_requestbuffers[v4l2_buf_type]])
+ioctl$VIDIOC_QUERYBUF(fd fd_video, cmd const[VIDIOC_QUERYBUF], arg ptr[inout, v4l2_buffer[v4l2_buf_type, fd]])
ioctl$VIDIOC_G_FBUF(fd fd_video, cmd const[VIDIOC_G_FBUF], arg ptr[inout, v4l2_framebuffer])
ioctl$VIDIOC_S_FBUF(fd fd_video, cmd const[VIDIOC_S_FBUF], arg ptr[in, v4l2_framebuffer])
ioctl$VIDIOC_OVERLAY(fd fd_video, cmd const[VIDIOC_OVERLAY], arg ptr[in, int32])
-ioctl$VIDIOC_QBUF(fd fd_video, cmd const[VIDIOC_QBUF], arg ptr[inout, v4l2_buffer])
-ioctl$VIDIOC_EXPBUF(fd fd_video, cmd const[VIDIOC_EXPBUF], arg ptr[inout, v4l2_exportbuffer])
-ioctl$VIDIOC_DQBUF(fd fd_video, cmd const[VIDIOC_DQBUF], arg ptr[inout, v4l2_buffer])
+ioctl$VIDIOC_QBUF(fd fd_video, cmd const[VIDIOC_QBUF], arg ptr[inout, v4l2_buffer[v4l2_buf_type, fd]])
+ioctl$VIDIOC_EXPBUF(fd fd_video, cmd const[VIDIOC_EXPBUF], arg ptr[inout, v4l2_exportbuffer[v4l2_buf_type]])
+ioctl$VIDIOC_DQBUF(fd fd_video, cmd const[VIDIOC_DQBUF], arg ptr[inout, v4l2_buffer[v4l2_buf_type, fd]])
ioctl$VIDIOC_STREAMON(fd fd_video, cmd const[VIDIOC_STREAMON], arg ptr[in, int32])
ioctl$VIDIOC_STREAMOFF(fd fd_video, cmd const[VIDIOC_STREAMOFF], arg ptr[in, int32])
ioctl$VIDIOC_G_PARM(fd fd_video, cmd const[VIDIOC_G_PARM], arg ptr[inout, v4l2_streamparm])
@@ -91,7 +93,7 @@ ioctl$VIDIOC_S_CROP(fd fd_video, cmd const[VIDIOC_S_CROP], arg ptr[in, v4l2_crop
ioctl$VIDIOC_G_JPEGCOMP(fd fd_video, cmd const[VIDIOC_G_JPEGCOMP], arg ptr[out, v4l2_jpegcompression])
ioctl$VIDIOC_S_JPEGCOMP(fd fd_video, cmd const[VIDIOC_S_JPEGCOMP], arg ptr[in, v4l2_jpegcompression])
ioctl$VIDIOC_QUERYSTD(fd fd_video, cmd const[VIDIOC_QUERYSTD], arg ptr[out, v4l2_std_id])
-ioctl$VIDIOC_TRY_FMT(fd fd_video, cmd const[VIDIOC_TRY_FMT], arg ptr[inout, v4l2_format])
+ioctl$VIDIOC_TRY_FMT(fd fd_video, cmd const[VIDIOC_TRY_FMT], arg ptr[inout, v4l2_format[v4l2_buf_type]])
ioctl$VIDIOC_ENUMAUDIO(fd fd_video, cmd const[VIDIOC_ENUMAUDIO], arg ptr[inout, v4l2_audio])
ioctl$VIDIOC_ENUMAUDOUT(fd fd_video, cmd const[VIDIOC_ENUMAUDOUT], arg ptr[inout, v4l2_audioout])
ioctl$VIDIOC_G_PRIORITY(fd fd_video, cmd const[VIDIOC_G_PRIORITY], arg flags[v4l2_priority])
@@ -114,8 +116,8 @@ ioctl$VIDIOC_G_DV_TIMINGS(fd fd_video, cmd const[VIDIOC_G_DV_TIMINGS], arg ptr[i
ioctl$VIDIOC_DQEVENT(fd fd_video, cmd const[VIDIOC_DQEVENT], arg ptr[out, v4l2_event])
ioctl$VIDIOC_SUBSCRIBE_EVENT(fd fd_video, cmd const[VIDIOC_SUBSCRIBE_EVENT], arg ptr[in, v4l2_event_subscription])
ioctl$VIDIOC_UNSUBSCRIBE_EVENT(fd fd_video, cmd const[VIDIOC_UNSUBSCRIBE_EVENT], arg ptr[in, v4l2_event_subscription])
-ioctl$VIDIOC_CREATE_BUFS(fd fd_video, cmd const[VIDIOC_CREATE_BUFS], arg ptr[inout, v4l2_create_buffers])
-ioctl$VIDIOC_PREPARE_BUF(fd fd_video, cmd const[VIDIOC_PREPARE_BUF], arg ptr[inout, v4l2_buffer])
+ioctl$VIDIOC_CREATE_BUFS(fd fd_video, cmd const[VIDIOC_CREATE_BUFS], arg ptr[inout, v4l2_create_buffers[v4l2_buf_type]])
+ioctl$VIDIOC_PREPARE_BUF(fd fd_video, cmd const[VIDIOC_PREPARE_BUF], arg ptr[inout, v4l2_buffer[v4l2_buf_type, fd]])
ioctl$VIDIOC_G_SELECTION(fd fd_video, cmd const[VIDIOC_G_SELECTION], arg ptr[inout, v4l2_selection])
ioctl$VIDIOC_S_SELECTION(fd fd_video, cmd const[VIDIOC_S_SELECTION], arg ptr[inout, v4l2_selection])
ioctl$VIDIOC_DECODER_CMD(fd fd_video, cmd const[VIDIOC_DECODER_CMD], arg ptr[inout, v4l2_decoder_cmd])
@@ -145,6 +147,9 @@ ioctl$VIDIOC_SUBDEV_ENUM_DV_TIMINGS(fd fd_video, cmd const[VIDIOC_SUBDEV_ENUM_DV
ioctl$VIDIOC_SUBDEV_QUERY_DV_TIMINGS(fd fd_video, cmd const[VIDIOC_SUBDEV_QUERY_DV_TIMINGS], arg ptr[out, v4l2_dv_timings])
ioctl$VIDIOC_SUBDEV_DV_TIMINGS_CAP(fd fd_video, cmd const[VIDIOC_SUBDEV_DV_TIMINGS_CAP], arg ptr[inout, v4l2_dv_timings_cap])
+ioctl$MEDIA_IOC_REQUEST_ALLOC(fd fd_media, cmd const[MEDIA_IOC_REQUEST_ALLOC], arg ptr[out, fd_request])
+ioctl$MEDIA_REQUEST_IOC_QUEUE(fd fd_request, cmd const[MEDIA_REQUEST_IOC_QUEUE], arg const[0])
+
v4l2_capability {
driver array[int8, 16]
card array[int8, 32]
@@ -155,17 +160,17 @@ v4l2_capability {
reserved array[const[0, int32], 3]
}
-v4l2_fmtdesc {
+type v4l2_fmtdesc[BUF_TYPE] {
index int32
- type flags[v4l2_buf_type, int32]
+ type flags[BUF_TYPE, int32]
flags flags[v4l2_fmtdesc_flags, int32]
description array[int8, 32]
pixelformat flags[v4l2_pix_format_pixelformat, int32]
reserved array[const[0, int32], 4]
}
-v4l2_format {
- type flags[v4l2_buf_type, int32]
+type v4l2_format[BUF_TYPE] {
+ type flags[BUF_TYPE, int32]
fmt v4l2_format_fmt
}
@@ -261,17 +266,17 @@ v4l2_sdr_format {
reserved array[const[0, int8], 24]
} [packed]
-v4l2_requestbuffers {
+type v4l2_requestbuffers[BUF_TYPE] {
count int32
- type flags[v4l2_buf_type, int32]
+ type flags[BUF_TYPE, int32]
memory flags[v4l2_memory, int32]
capabilities const[0, int32]
reserved const[0, int32]
}
-v4l2_buffer {
+type v4l2_buffer[BUF_TYPE, FD_TYPE] {
index int32
- type flags[v4l2_buf_type, int32]
+ type flags[BUF_TYPE, int32]
bytesused len[type, int32]
flags flags[v4l2_buffer_flags, int32]
field int32
@@ -282,7 +287,7 @@ v4l2_buffer {
m v4l2_buffer_union
length int32
reserved2 const[0, int32]
- request_fd fd[opt]
+ request_fd FD_TYPE[opt]
}
v4l2_buffer_union [
@@ -334,8 +339,8 @@ v4l2_framebuffer_union {
priv int32
}
-v4l2_exportbuffer {
- type flags[v4l2_buf_type, int32]
+type v4l2_exportbuffer[BUF_TYPE] {
+ type flags[BUF_TYPE, int32]
index int32
plane int32
flags flags[pipe_flags, int32]
@@ -707,11 +712,11 @@ v4l2_event_subscription {
reserved array[const[0, int32], 5]
}
-v4l2_create_buffers {
+type v4l2_create_buffers[BUF_TYPE] {
index int32
count int32
memory flags[v4l2_memory, int32]
- format v4l2_format
+ format v4l2_format[BUF_TYPE]
capabilities int32
reserved array[const[0, int32], 7]
}
diff --git a/sys/linux/dev_video4linux_amd64.const b/sys/linux/dev_video4linux_amd64.const
index a8088890c..a732812f6 100644
--- a/sys/linux/dev_video4linux_amd64.const
+++ b/sys/linux/dev_video4linux_amd64.const
@@ -1,4 +1,5 @@
# AUTOGENERATED FILE
+AT_FDCWD = 18446744073709551516
MEDIA_BUS_FMT_AHSV8888_1X32 = 24577
MEDIA_BUS_FMT_ARGB8888_1X32 = 4109
MEDIA_BUS_FMT_AYUV8_1X32 = 8215
@@ -87,6 +88,9 @@ MEDIA_BUS_FMT_YVYU12_2X12 = 8223
MEDIA_BUS_FMT_YVYU8_1X16 = 8210
MEDIA_BUS_FMT_YVYU8_1_5X8 = 8197
MEDIA_BUS_FMT_YVYU8_2X8 = 8201
+MEDIA_IOC_REQUEST_ALLOC = 2147777541
+MEDIA_REQUEST_IOC_QUEUE = 31872
+O_RDWR = 2
V4L2_AUDCAP_AVL = 2
V4L2_AUDCAP_STEREO = 1
V4L2_AUDMODE_AVL = 1
@@ -441,7 +445,7 @@ V4L2_CID_ZOOM_CONTINUOUS = 10094863
V4L2_CID_ZOOM_RELATIVE = 10094862
V4L2_COLORSPACE_470_SYSTEM_BG = 6
V4L2_COLORSPACE_470_SYSTEM_M = 5
-V4L2_COLORSPACE_ADOBERGB = 9
+# V4L2_COLORSPACE_ADOBERGB is not set
V4L2_COLORSPACE_BT2020 = 10
V4L2_COLORSPACE_BT878 = 4
V4L2_COLORSPACE_DCI_P3 = 12
@@ -501,7 +505,7 @@ V4L2_DEC_CMD_START_MUTE_AUDIO = 1
V4L2_DEC_CMD_STOP = 1
V4L2_DEC_CMD_STOP_IMMEDIATELY = 2
V4L2_DEC_CMD_STOP_TO_BLACK = 1
-V4L2_DEC_QCOM_CMD_RECONFIG_HINT = 5
+# V4L2_DEC_QCOM_CMD_RECONFIG_HINT is not set
V4L2_DEC_START_FMT_GOP = 1
V4L2_DEC_START_FMT_NONE = 0
V4L2_DV_BT_656_1120 = 0
@@ -542,17 +546,17 @@ V4L2_EVENT_EOS = 2
V4L2_EVENT_FRAME_SYNC = 4
V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ = 1
V4L2_EVENT_MOTION_DET = 6
-V4L2_EVENT_MSM_VIDC_FLUSH_DONE = 134221825
-V4L2_EVENT_MSM_VIDC_HW_OVERLOAD = 134221832
-V4L2_EVENT_MSM_VIDC_HW_UNSUPPORTED = 134221834
-V4L2_EVENT_MSM_VIDC_MAX_CLIENTS = 134221833
-V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_BITDEPTH_CHANGED_INSUFFICIENT = 134221828
-V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_INSUFFICIENT = 134221827
-V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_SUFFICIENT = 134221826
-V4L2_EVENT_MSM_VIDC_RELEASE_BUFFER_REFERENCE = 134221830
-V4L2_EVENT_MSM_VIDC_RELEASE_UNQUEUED_BUFFER = 134221831
-V4L2_EVENT_MSM_VIDC_START = 134221824
-V4L2_EVENT_MSM_VIDC_SYS_ERROR = 134221829
+# V4L2_EVENT_MSM_VIDC_FLUSH_DONE is not set
+# V4L2_EVENT_MSM_VIDC_HW_OVERLOAD is not set
+# V4L2_EVENT_MSM_VIDC_HW_UNSUPPORTED is not set
+# V4L2_EVENT_MSM_VIDC_MAX_CLIENTS is not set
+# V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_BITDEPTH_CHANGED_INSUFFICIENT is not set
+# V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_INSUFFICIENT is not set
+# V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_SUFFICIENT is not set
+# V4L2_EVENT_MSM_VIDC_RELEASE_BUFFER_REFERENCE is not set
+# V4L2_EVENT_MSM_VIDC_RELEASE_UNQUEUED_BUFFER is not set
+# V4L2_EVENT_MSM_VIDC_START is not set
+# V4L2_EVENT_MSM_VIDC_SYS_ERROR is not set
V4L2_EVENT_PRIVATE_START = 134217728
V4L2_EVENT_SOURCE_CHANGE = 5
V4L2_EVENT_SRC_CH_RESOLUTION = 1
@@ -624,7 +628,7 @@ V4L2_MEMORY_MMAP = 1
V4L2_MEMORY_OVERLAY = 3
V4L2_MEMORY_USERPTR = 2
V4L2_MODE_HIGHQUALITY = 1
-V4L2_MSM_BUF_FLAG_DEFER = 1073741824
+# V4L2_MSM_BUF_FLAG_DEFER is not set
V4L2_OUTPUT_TYPE_ANALOG = 2
V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY = 3
V4L2_OUTPUT_TYPE_MODULATOR = 1
@@ -668,9 +672,9 @@ V4L2_PIX_FMT_NV12 = 842094158
V4L2_PIX_FMT_NV12M = 842091854
V4L2_PIX_FMT_NV12MT = 842091860
V4L2_PIX_FMT_NV12MT_16X16 = 842091862
-V4L2_PIX_FMT_NV12_P010_UBWC = 1110585681
-V4L2_PIX_FMT_NV12_TP10_UBWC = 1093808465
-V4L2_PIX_FMT_NV12_UBWC = 942813521
+# V4L2_PIX_FMT_NV12_P010_UBWC is not set
+# V4L2_PIX_FMT_NV12_TP10_UBWC is not set
+# V4L2_PIX_FMT_NV12_UBWC is not set
V4L2_PIX_FMT_NV16 = 909203022
V4L2_PIX_FMT_NV16M = 909200718
V4L2_PIX_FMT_NV21 = 825382478
@@ -694,7 +698,7 @@ V4L2_PIX_FMT_RGB555 = 1329743698
V4L2_PIX_FMT_RGB555X = 1363298130
V4L2_PIX_FMT_RGB565 = 1346520914
V4L2_PIX_FMT_RGB565X = 1380075346
-V4L2_PIX_FMT_RGBA8888_UBWC = 1111970385
+# V4L2_PIX_FMT_RGBA8888_UBWC is not set
V4L2_PIX_FMT_S5C_UYVY_JPG = 1229141331
V4L2_PIX_FMT_SBGGR10 = 808535874
V4L2_PIX_FMT_SBGGR10ALAW8 = 943800929
@@ -732,7 +736,7 @@ V4L2_PIX_FMT_SRGGB12 = 842090322
V4L2_PIX_FMT_SRGGB8 = 1111967570
V4L2_PIX_FMT_STV0680 = 808990291
V4L2_PIX_FMT_TM6000 = 808865108
-V4L2_PIX_FMT_TME = 809848148
+# V4L2_PIX_FMT_TME is not set
V4L2_PIX_FMT_UV8 = 540563029
V4L2_PIX_FMT_UYVY = 1498831189
V4L2_PIX_FMT_VC1_ANNEX_G = 1194410838
@@ -782,20 +786,20 @@ V4L2_PRIORITY_DEFAULT = 2
V4L2_PRIORITY_INTERACTIVE = 2
V4L2_PRIORITY_RECORD = 3
V4L2_PRIORITY_UNSET = 0
-V4L2_QCOM_BUF_DATA_CORRUPT = 4194304
-V4L2_QCOM_BUF_FLAG_CODECCONFIG = 131072
-V4L2_QCOM_BUF_FLAG_DECODEONLY = 2097152
-V4L2_QCOM_BUF_FLAG_EOS = 33554432
-V4L2_QCOM_BUF_FLAG_EOSEQ = 262144
-V4L2_QCOM_BUF_FLAG_IDRFRAME = 2147483648
-V4L2_QCOM_BUF_FLAG_PERF_MODE = 536870912
-V4L2_QCOM_BUF_FLAG_READONLY = 67108864
-V4L2_QCOM_BUF_INPUT_UNSUPPORTED = 16777216
-V4L2_QCOM_BUF_TIMESTAMP_INVALID = 524288
-V4L2_QCOM_CMD_FLUSH = 4
-V4L2_QCOM_CMD_FLUSH_CAPTURE = 2
-V4L2_QCOM_CMD_FLUSH_OUTPUT = 1
-V4L2_QCOM_CMD_SESSION_CONTINUE = 6
+# V4L2_QCOM_BUF_DATA_CORRUPT is not set
+# V4L2_QCOM_BUF_FLAG_CODECCONFIG is not set
+# V4L2_QCOM_BUF_FLAG_DECODEONLY is not set
+# V4L2_QCOM_BUF_FLAG_EOS is not set
+# V4L2_QCOM_BUF_FLAG_EOSEQ is not set
+# V4L2_QCOM_BUF_FLAG_IDRFRAME is not set
+# V4L2_QCOM_BUF_FLAG_PERF_MODE is not set
+# V4L2_QCOM_BUF_FLAG_READONLY is not set
+# V4L2_QCOM_BUF_INPUT_UNSUPPORTED is not set
+# V4L2_QCOM_BUF_TIMESTAMP_INVALID is not set
+# V4L2_QCOM_CMD_FLUSH is not set
+# V4L2_QCOM_CMD_FLUSH_CAPTURE is not set
+# V4L2_QCOM_CMD_FLUSH_OUTPUT is not set
+# V4L2_QCOM_CMD_SESSION_CONTINUE is not set
V4L2_QUANTIZATION_DEFAULT = 0
V4L2_QUANTIZATION_FULL_RANGE = 1
V4L2_QUANTIZATION_LIM_RANGE = 2
@@ -803,12 +807,12 @@ V4L2_SEL_FLAG_GE = 1
V4L2_SEL_FLAG_KEEP_CONFIG = 4
V4L2_SEL_FLAG_LE = 2
V4L2_SEL_TGT_COMPOSE = 256
-V4L2_SEL_TGT_COMPOSE_ACTIVE = 256
+# V4L2_SEL_TGT_COMPOSE_ACTIVE is not set
V4L2_SEL_TGT_COMPOSE_BOUNDS = 258
V4L2_SEL_TGT_COMPOSE_DEFAULT = 257
V4L2_SEL_TGT_COMPOSE_PADDED = 259
V4L2_SEL_TGT_CROP = 0
-V4L2_SEL_TGT_CROP_ACTIVE = 0
+# V4L2_SEL_TGT_CROP_ACTIVE is not set
V4L2_SEL_TGT_CROP_BOUNDS = 2
V4L2_SEL_TGT_CROP_DEFAULT = 1
V4L2_SEL_TGT_NATIVE_SIZE = 3
@@ -860,13 +864,13 @@ V4L2_STD_SECAM_LC = 8388608
V4L2_STD_UNKNOWN = 0
V4L2_SUBDEV_FORMAT_ACTIVE = 1
V4L2_SUBDEV_FORMAT_TRY = 0
-V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG = 4
-V4L2_SUBDEV_SEL_FLAG_SIZE_GE = 1
-V4L2_SUBDEV_SEL_FLAG_SIZE_LE = 2
-V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL = 256
-V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS = 258
-V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL = 0
-V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS = 2
+# V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG is not set
+# V4L2_SUBDEV_SEL_FLAG_SIZE_GE is not set
+# V4L2_SUBDEV_SEL_FLAG_SIZE_LE is not set
+# V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL is not set
+# V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS is not set
+# V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL is not set
+# V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS is not set
V4L2_TC_FLAG_COLORFRAME = 2
V4L2_TC_FLAG_DROPFRAME = 1
V4L2_TC_TYPE_24FPS = 1
@@ -915,7 +919,7 @@ V4L2_VBI_ITU_625_F1_START = 1
V4L2_VBI_ITU_625_F2_START = 314
V4L2_VBI_UNSYNC = 1
V4L2_XFER_FUNC_709 = 1
-V4L2_XFER_FUNC_ADOBERGB = 3
+# V4L2_XFER_FUNC_ADOBERGB is not set
V4L2_XFER_FUNC_DCI_P3 = 6
V4L2_XFER_FUNC_DEFAULT = 0
V4L2_XFER_FUNC_NONE = 5
@@ -984,7 +988,7 @@ VIDIOC_QUERYSTD = 2148030015
VIDIOC_QUERY_DV_TIMINGS = 2156156515
VIDIOC_QUERY_EXT_CTRL = 3236451943
VIDIOC_REQBUFS = 3222558216
-VIDIOC_RESERVED = 22017
+# VIDIOC_RESERVED is not set
VIDIOC_STREAMOFF = 1074026003
VIDIOC_STREAMON = 1074026002
VIDIOC_SUBDEV_DV_TIMINGS_CAP = 3230684772
@@ -1032,3 +1036,4 @@ VIDIOC_TRY_EXT_CTRLS = 3223344713
VIDIOC_TRY_FMT = 3234879040
VIDIOC_UNSUBSCRIBE_EVENT = 1075861083
__NR_ioctl = 16
+__NR_openat = 257
diff --git a/sys/linux/dev_video4linux_arm64.const b/sys/linux/dev_video4linux_arm64.const
index c18bacdbe..2d505d23f 100644
--- a/sys/linux/dev_video4linux_arm64.const
+++ b/sys/linux/dev_video4linux_arm64.const
@@ -1,4 +1,5 @@
# AUTOGENERATED FILE
+AT_FDCWD = 18446744073709551516
MEDIA_BUS_FMT_AHSV8888_1X32 = 24577
MEDIA_BUS_FMT_ARGB8888_1X32 = 4109
MEDIA_BUS_FMT_AYUV8_1X32 = 8215
@@ -87,6 +88,9 @@ MEDIA_BUS_FMT_YVYU12_2X12 = 8223
MEDIA_BUS_FMT_YVYU8_1X16 = 8210
MEDIA_BUS_FMT_YVYU8_1_5X8 = 8197
MEDIA_BUS_FMT_YVYU8_2X8 = 8201
+MEDIA_IOC_REQUEST_ALLOC = 2147777541
+MEDIA_REQUEST_IOC_QUEUE = 31872
+O_RDWR = 2
V4L2_AUDCAP_AVL = 2
V4L2_AUDCAP_STEREO = 1
V4L2_AUDMODE_AVL = 1
@@ -441,7 +445,7 @@ V4L2_CID_ZOOM_CONTINUOUS = 10094863
V4L2_CID_ZOOM_RELATIVE = 10094862
V4L2_COLORSPACE_470_SYSTEM_BG = 6
V4L2_COLORSPACE_470_SYSTEM_M = 5
-V4L2_COLORSPACE_ADOBERGB = 9
+# V4L2_COLORSPACE_ADOBERGB is not set
V4L2_COLORSPACE_BT2020 = 10
V4L2_COLORSPACE_BT878 = 4
V4L2_COLORSPACE_DCI_P3 = 12
@@ -501,7 +505,7 @@ V4L2_DEC_CMD_START_MUTE_AUDIO = 1
V4L2_DEC_CMD_STOP = 1
V4L2_DEC_CMD_STOP_IMMEDIATELY = 2
V4L2_DEC_CMD_STOP_TO_BLACK = 1
-V4L2_DEC_QCOM_CMD_RECONFIG_HINT = 5
+# V4L2_DEC_QCOM_CMD_RECONFIG_HINT is not set
V4L2_DEC_START_FMT_GOP = 1
V4L2_DEC_START_FMT_NONE = 0
V4L2_DV_BT_656_1120 = 0
@@ -542,17 +546,17 @@ V4L2_EVENT_EOS = 2
V4L2_EVENT_FRAME_SYNC = 4
V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ = 1
V4L2_EVENT_MOTION_DET = 6
-V4L2_EVENT_MSM_VIDC_FLUSH_DONE = 134221825
-V4L2_EVENT_MSM_VIDC_HW_OVERLOAD = 134221832
-V4L2_EVENT_MSM_VIDC_HW_UNSUPPORTED = 134221834
-V4L2_EVENT_MSM_VIDC_MAX_CLIENTS = 134221833
-V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_BITDEPTH_CHANGED_INSUFFICIENT = 134221828
-V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_INSUFFICIENT = 134221827
-V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_SUFFICIENT = 134221826
-V4L2_EVENT_MSM_VIDC_RELEASE_BUFFER_REFERENCE = 134221830
-V4L2_EVENT_MSM_VIDC_RELEASE_UNQUEUED_BUFFER = 134221831
-V4L2_EVENT_MSM_VIDC_START = 134221824
-V4L2_EVENT_MSM_VIDC_SYS_ERROR = 134221829
+# V4L2_EVENT_MSM_VIDC_FLUSH_DONE is not set
+# V4L2_EVENT_MSM_VIDC_HW_OVERLOAD is not set
+# V4L2_EVENT_MSM_VIDC_HW_UNSUPPORTED is not set
+# V4L2_EVENT_MSM_VIDC_MAX_CLIENTS is not set
+# V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_BITDEPTH_CHANGED_INSUFFICIENT is not set
+# V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_INSUFFICIENT is not set
+# V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_SUFFICIENT is not set
+# V4L2_EVENT_MSM_VIDC_RELEASE_BUFFER_REFERENCE is not set
+# V4L2_EVENT_MSM_VIDC_RELEASE_UNQUEUED_BUFFER is not set
+# V4L2_EVENT_MSM_VIDC_START is not set
+# V4L2_EVENT_MSM_VIDC_SYS_ERROR is not set
V4L2_EVENT_PRIVATE_START = 134217728
V4L2_EVENT_SOURCE_CHANGE = 5
V4L2_EVENT_SRC_CH_RESOLUTION = 1
@@ -624,7 +628,7 @@ V4L2_MEMORY_MMAP = 1
V4L2_MEMORY_OVERLAY = 3
V4L2_MEMORY_USERPTR = 2
V4L2_MODE_HIGHQUALITY = 1
-V4L2_MSM_BUF_FLAG_DEFER = 1073741824
+# V4L2_MSM_BUF_FLAG_DEFER is not set
V4L2_OUTPUT_TYPE_ANALOG = 2
V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY = 3
V4L2_OUTPUT_TYPE_MODULATOR = 1
@@ -668,9 +672,9 @@ V4L2_PIX_FMT_NV12 = 842094158
V4L2_PIX_FMT_NV12M = 842091854
V4L2_PIX_FMT_NV12MT = 842091860
V4L2_PIX_FMT_NV12MT_16X16 = 842091862
-V4L2_PIX_FMT_NV12_P010_UBWC = 1110585681
-V4L2_PIX_FMT_NV12_TP10_UBWC = 1093808465
-V4L2_PIX_FMT_NV12_UBWC = 942813521
+# V4L2_PIX_FMT_NV12_P010_UBWC is not set
+# V4L2_PIX_FMT_NV12_TP10_UBWC is not set
+# V4L2_PIX_FMT_NV12_UBWC is not set
V4L2_PIX_FMT_NV16 = 909203022
V4L2_PIX_FMT_NV16M = 909200718
V4L2_PIX_FMT_NV21 = 825382478
@@ -694,7 +698,7 @@ V4L2_PIX_FMT_RGB555 = 1329743698
V4L2_PIX_FMT_RGB555X = 1363298130
V4L2_PIX_FMT_RGB565 = 1346520914
V4L2_PIX_FMT_RGB565X = 1380075346
-V4L2_PIX_FMT_RGBA8888_UBWC = 1111970385
+# V4L2_PIX_FMT_RGBA8888_UBWC is not set
V4L2_PIX_FMT_S5C_UYVY_JPG = 1229141331
V4L2_PIX_FMT_SBGGR10 = 808535874
V4L2_PIX_FMT_SBGGR10ALAW8 = 943800929
@@ -732,7 +736,7 @@ V4L2_PIX_FMT_SRGGB12 = 842090322
V4L2_PIX_FMT_SRGGB8 = 1111967570
V4L2_PIX_FMT_STV0680 = 808990291
V4L2_PIX_FMT_TM6000 = 808865108
-V4L2_PIX_FMT_TME = 809848148
+# V4L2_PIX_FMT_TME is not set
V4L2_PIX_FMT_UV8 = 540563029
V4L2_PIX_FMT_UYVY = 1498831189
V4L2_PIX_FMT_VC1_ANNEX_G = 1194410838
@@ -782,20 +786,20 @@ V4L2_PRIORITY_DEFAULT = 2
V4L2_PRIORITY_INTERACTIVE = 2
V4L2_PRIORITY_RECORD = 3
V4L2_PRIORITY_UNSET = 0
-V4L2_QCOM_BUF_DATA_CORRUPT = 4194304
-V4L2_QCOM_BUF_FLAG_CODECCONFIG = 131072
-V4L2_QCOM_BUF_FLAG_DECODEONLY = 2097152
-V4L2_QCOM_BUF_FLAG_EOS = 33554432
-V4L2_QCOM_BUF_FLAG_EOSEQ = 262144
-V4L2_QCOM_BUF_FLAG_IDRFRAME = 2147483648
-V4L2_QCOM_BUF_FLAG_PERF_MODE = 536870912
-V4L2_QCOM_BUF_FLAG_READONLY = 67108864
-V4L2_QCOM_BUF_INPUT_UNSUPPORTED = 16777216
-V4L2_QCOM_BUF_TIMESTAMP_INVALID = 524288
-V4L2_QCOM_CMD_FLUSH = 4
-V4L2_QCOM_CMD_FLUSH_CAPTURE = 2
-V4L2_QCOM_CMD_FLUSH_OUTPUT = 1
-V4L2_QCOM_CMD_SESSION_CONTINUE = 6
+# V4L2_QCOM_BUF_DATA_CORRUPT is not set
+# V4L2_QCOM_BUF_FLAG_CODECCONFIG is not set
+# V4L2_QCOM_BUF_FLAG_DECODEONLY is not set
+# V4L2_QCOM_BUF_FLAG_EOS is not set
+# V4L2_QCOM_BUF_FLAG_EOSEQ is not set
+# V4L2_QCOM_BUF_FLAG_IDRFRAME is not set
+# V4L2_QCOM_BUF_FLAG_PERF_MODE is not set
+# V4L2_QCOM_BUF_FLAG_READONLY is not set
+# V4L2_QCOM_BUF_INPUT_UNSUPPORTED is not set
+# V4L2_QCOM_BUF_TIMESTAMP_INVALID is not set
+# V4L2_QCOM_CMD_FLUSH is not set
+# V4L2_QCOM_CMD_FLUSH_CAPTURE is not set
+# V4L2_QCOM_CMD_FLUSH_OUTPUT is not set
+# V4L2_QCOM_CMD_SESSION_CONTINUE is not set
V4L2_QUANTIZATION_DEFAULT = 0
V4L2_QUANTIZATION_FULL_RANGE = 1
V4L2_QUANTIZATION_LIM_RANGE = 2
@@ -803,12 +807,12 @@ V4L2_SEL_FLAG_GE = 1
V4L2_SEL_FLAG_KEEP_CONFIG = 4
V4L2_SEL_FLAG_LE = 2
V4L2_SEL_TGT_COMPOSE = 256
-V4L2_SEL_TGT_COMPOSE_ACTIVE = 256
+# V4L2_SEL_TGT_COMPOSE_ACTIVE is not set
V4L2_SEL_TGT_COMPOSE_BOUNDS = 258
V4L2_SEL_TGT_COMPOSE_DEFAULT = 257
V4L2_SEL_TGT_COMPOSE_PADDED = 259
V4L2_SEL_TGT_CROP = 0
-V4L2_SEL_TGT_CROP_ACTIVE = 0
+# V4L2_SEL_TGT_CROP_ACTIVE is not set
V4L2_SEL_TGT_CROP_BOUNDS = 2
V4L2_SEL_TGT_CROP_DEFAULT = 1
V4L2_SEL_TGT_NATIVE_SIZE = 3
@@ -860,13 +864,13 @@ V4L2_STD_SECAM_LC = 8388608
V4L2_STD_UNKNOWN = 0
V4L2_SUBDEV_FORMAT_ACTIVE = 1
V4L2_SUBDEV_FORMAT_TRY = 0
-V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG = 4
-V4L2_SUBDEV_SEL_FLAG_SIZE_GE = 1
-V4L2_SUBDEV_SEL_FLAG_SIZE_LE = 2
-V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL = 256
-V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS = 258
-V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL = 0
-V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS = 2
+# V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG is not set
+# V4L2_SUBDEV_SEL_FLAG_SIZE_GE is not set
+# V4L2_SUBDEV_SEL_FLAG_SIZE_LE is not set
+# V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL is not set
+# V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS is not set
+# V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL is not set
+# V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS is not set
V4L2_TC_FLAG_COLORFRAME = 2
V4L2_TC_FLAG_DROPFRAME = 1
V4L2_TC_TYPE_24FPS = 1
@@ -915,7 +919,7 @@ V4L2_VBI_ITU_625_F1_START = 1
V4L2_VBI_ITU_625_F2_START = 314
V4L2_VBI_UNSYNC = 1
V4L2_XFER_FUNC_709 = 1
-V4L2_XFER_FUNC_ADOBERGB = 3
+# V4L2_XFER_FUNC_ADOBERGB is not set
V4L2_XFER_FUNC_DCI_P3 = 6
V4L2_XFER_FUNC_DEFAULT = 0
V4L2_XFER_FUNC_NONE = 5
@@ -984,7 +988,7 @@ VIDIOC_QUERYSTD = 2148030015
VIDIOC_QUERY_DV_TIMINGS = 2156156515
VIDIOC_QUERY_EXT_CTRL = 3236451943
VIDIOC_REQBUFS = 3222558216
-VIDIOC_RESERVED = 22017
+# VIDIOC_RESERVED is not set
VIDIOC_STREAMOFF = 1074026003
VIDIOC_STREAMON = 1074026002
VIDIOC_SUBDEV_DV_TIMINGS_CAP = 3230684772
@@ -1032,3 +1036,4 @@ VIDIOC_TRY_EXT_CTRLS = 3223344713
VIDIOC_TRY_FMT = 3234879040
VIDIOC_UNSUBSCRIBE_EVENT = 1075861083
__NR_ioctl = 29
+__NR_openat = 56
diff --git a/sys/linux/dev_video4linux_vim2m.txt b/sys/linux/dev_video4linux_vim2m.txt
new file mode 100644
index 000000000..d0eb6fd43
--- /dev/null
+++ b/sys/linux/dev_video4linux_vim2m.txt
@@ -0,0 +1,58 @@
+# Copyright 2020 syzkaller project authors. All rights reserved.
+# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+# V4L2 specific support for the vim2m driver.
+#
+# These descriptions narrow the search space to focus on the M2M
+# framework code. The vim2m driver should be built into the kernel
+# (CONFIG_VIDEO_VI2M2=y)
+
+include <linux/time.h>
+include <linux/types.h>
+include <uapi/asm/ioctl.h>
+include <uapi/linux/fcntl.h>
+include <uapi/linux/videodev2.h>
+include <uapi/linux/v4l2-common.h>
+include <uapi/linux/v4l2-subdev.h>
+include <uapi/linux/v4l2-mediabus.h>
+include <uapi/linux/media-bus-format.h>
+include <uapi/linux/v4l2-controls.h>
+
+resource fd_vim2m[fd]
+
+# syz_open_dev will use devices from /dev/video0 to /dev/video10
+# openat$vim2m assumes a symlink (/dev/vim2m) to the appropriate vim2m device
+# This can be set with a udev rule such as this:
+#
+# ATTR{name}=="vim2m", SYMLINK+="vim2m"
+
+syz_open_dev$vim2m(dev ptr[in, string["/dev/video#"]], id intptr, flags const[O_RDWR]) fd_vim2m
+openat$vim2m(fd const[AT_FDCWD], file ptr[in, string["/dev/vim2m"]], flags const[O_RDWR], mode const[0]) fd_vim2m
+
+# Specialized ioctls for vim2m
+
+ioctl$vim2m_VIDIOC_QUERYCAP(fd fd_vim2m, cmd const[VIDIOC_QUERYCAP], arg ptr[out, v4l2_capability])
+ioctl$vim2m_VIDIOC_ENUM_FMT(fd fd_vim2m, cmd const[VIDIOC_ENUM_FMT], arg ptr[inout, v4l2_fmtdesc[v4l2_buf_type_vim2m]])
+ioctl$vim2m_VIDIOC_ENUM_FRAMESIZES(fd fd_vim2m, cmd const[VIDIOC_ENUM_FRAMESIZES], arg ptr[inout, v4l2_frmsizeenum])
+ioctl$vim2m_VIDIOC_G_FMT(fd fd_vim2m, cmd const[VIDIOC_G_FMT], arg ptr[inout, v4l2_format[v4l2_buf_type_vim2m]])
+ioctl$vim2m_VIDIOC_TRY_FMT(fd fd_vim2m, cmd const[VIDIOC_TRY_FMT], arg ptr[inout, v4l2_format[v4l2_buf_type_vim2m]])
+ioctl$vim2m_VIDIOC_S_FMT(fd fd_vim2m, cmd const[VIDIOC_S_FMT], arg ptr[inout, v4l2_format[v4l2_buf_type_vim2m]])
+ioctl$vim2m_VIDIOC_REQBUFS(fd fd_vim2m, cmd const[VIDIOC_REQBUFS], arg ptr[inout, v4l2_requestbuffers[v4l2_buf_type_vim2m]])
+ioctl$vim2m_VIDIOC_QUERYBUF(fd fd_vim2m, cmd const[VIDIOC_QUERYBUF], arg ptr[inout, v4l2_buffer[v4l2_buf_type_vim2m, fd_request]])
+ioctl$vim2m_VIDIOC_QBUF(fd fd_vim2m, cmd const[VIDIOC_QBUF], arg ptr[inout, v4l2_buffer[v4l2_buf_type_vim2m, fd_request]])
+ioctl$vim2m_VIDIOC_DQBUF(fd fd_vim2m, cmd const[VIDIOC_DQBUF], arg ptr[inout, v4l2_buffer[v4l2_buf_type_vim2m, fd_request]])
+ioctl$vim2m_VIDIOC_PREPARE_BUF(fd fd_vim2m, cmd const[VIDIOC_PREPARE_BUF], arg ptr[inout, v4l2_buffer[v4l2_buf_type_vim2m, fd_request]])
+ioctl$vim2m_VIDIOC_CREATE_BUFS(fd fd_vim2m, cmd const[VIDIOC_CREATE_BUFS], arg ptr[inout, v4l2_create_buffers[v4l2_buf_type_vim2m]])
+ioctl$vim2m_VIDIOC_EXPBUF(fd fd_vim2m, cmd const[VIDIOC_EXPBUF], arg ptr[inout, v4l2_exportbuffer[v4l2_buf_type_vim2m]])
+ioctl$vim2m_VIDIOC_S_CTRL(fd fd_vim2m, cmd const[VIDIOC_S_CTRL], arg ptr[inout, v4l2_control])
+ioctl$vim2m_VIDIOC_STREAMON(fd fd_vim2m, cmd const[VIDIOC_STREAMON], arg ptr[in, vim2m_qtype])
+ioctl$vim2m_VIDIOC_STREAMOFF(fd fd_vim2m, cmd const[VIDIOC_STREAMON], arg ptr[in, vim2m_qtype])
+
+# Limit buffer types to OUTPUT and CAPTURE
+
+vim2m_qtype [
+ output const[V4L2_BUF_TYPE_VIDEO_OUTPUT, int32]
+ capture const[V4L2_BUF_TYPE_VIDEO_CAPTURE, int32]
+]
+
+v4l2_buf_type_vim2m = V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_BUF_TYPE_VIDEO_OUTPUT
diff --git a/sys/linux/dev_video4linux_vim2m_amd64.const b/sys/linux/dev_video4linux_vim2m_amd64.const
new file mode 100644
index 000000000..e580db196
--- /dev/null
+++ b/sys/linux/dev_video4linux_vim2m_amd64.const
@@ -0,0 +1,22 @@
+# AUTOGENERATED FILE
+AT_FDCWD = 18446744073709551516
+O_RDWR = 2
+V4L2_BUF_TYPE_VIDEO_CAPTURE = 1
+V4L2_BUF_TYPE_VIDEO_OUTPUT = 2
+VIDIOC_CREATE_BUFS = 3238024796
+VIDIOC_DQBUF = 3227014673
+VIDIOC_ENUM_FMT = 3225441794
+VIDIOC_ENUM_FRAMESIZES = 3224131146
+VIDIOC_EXPBUF = 3225441808
+VIDIOC_G_FMT = 3234878980
+VIDIOC_PREPARE_BUF = 3227014749
+VIDIOC_QBUF = 3227014671
+VIDIOC_QUERYBUF = 3227014665
+VIDIOC_QUERYCAP = 2154321408
+VIDIOC_REQBUFS = 3222558216
+VIDIOC_STREAMON = 1074026002
+VIDIOC_S_CTRL = 3221771804
+VIDIOC_S_FMT = 3234878981
+VIDIOC_TRY_FMT = 3234879040
+__NR_ioctl = 16
+__NR_openat = 257
diff --git a/sys/linux/dev_video4linux_vim2m_arm64.const b/sys/linux/dev_video4linux_vim2m_arm64.const
new file mode 100644
index 000000000..a8f712fa9
--- /dev/null
+++ b/sys/linux/dev_video4linux_vim2m_arm64.const
@@ -0,0 +1,22 @@
+# AUTOGENERATED FILE
+AT_FDCWD = 18446744073709551516
+O_RDWR = 2
+V4L2_BUF_TYPE_VIDEO_CAPTURE = 1
+V4L2_BUF_TYPE_VIDEO_OUTPUT = 2
+VIDIOC_CREATE_BUFS = 3238024796
+VIDIOC_DQBUF = 3227014673
+VIDIOC_ENUM_FMT = 3225441794
+VIDIOC_ENUM_FRAMESIZES = 3224131146
+VIDIOC_EXPBUF = 3225441808
+VIDIOC_G_FMT = 3234878980
+VIDIOC_PREPARE_BUF = 3227014749
+VIDIOC_QBUF = 3227014671
+VIDIOC_QUERYBUF = 3227014665
+VIDIOC_QUERYCAP = 2154321408
+VIDIOC_REQBUFS = 3222558216
+VIDIOC_STREAMON = 1074026002
+VIDIOC_S_CTRL = 3221771804
+VIDIOC_S_FMT = 3234878981
+VIDIOC_TRY_FMT = 3234879040
+__NR_ioctl = 29
+__NR_openat = 56
diff --git a/sys/linux/sys.txt b/sys/linux/sys.txt
index 93ae625dc..f0508ff6e 100644
--- a/sys/linux/sys.txt
+++ b/sys/linux/sys.txt
@@ -508,7 +508,7 @@ syz_open_dev$vcsu(dev ptr[in, string["/dev/vcsu#"]], id intptr, flags flags[open
syz_open_dev$ircomm(dev ptr[in, string["/dev/ircomm#"]], id intptr, flags flags[open_flags]) fd
syz_open_dev$audion(dev ptr[in, string["/dev/audio#"]], id intptr, flags flags[open_flags]) fd
syz_open_dev$sndhw(dev ptr[in, string["/dev/snd/hwC#D#"]], id intptr, flags flags[open_flags]) fd
-syz_open_dev$media(dev ptr[in, string["/dev/media#"]], id intptr, flags flags[open_flags]) fd
+syz_open_dev$media(dev ptr[in, string["/dev/media#"]], id intptr, flags flags[open_flags]) fd_media
openat$null(fd const[AT_FDCWD], file ptr[in, string["/dev/null"]], flags flags[open_flags], mode const[0]) fd
openat$zero(fd const[AT_FDCWD], file ptr[in, string["/dev/zero"]], flags flags[open_flags], mode const[0]) fd