media: v4l2-dev: handle V4L2_CAP_EDID
When the V4L2_CAP_EDID capability flag is set, ioctls for enum inputs/outputs and get/set edid are automatically set. Signed-off-by: Erling Ljunggren <hljunggr@cisco.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Reviewed-by: Sebastian Fricke <sebastian.fricke@collabora.com> Reviewed-by: Ricardo Ribalda <ribalda@chromium.org> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
6fe0593bfc
commit
c9edd2e4fe
@ -557,6 +557,7 @@ static void determine_valid_ioctls(struct video_device *vdev)
|
||||
bool is_tx = vdev->vfl_dir != VFL_DIR_RX;
|
||||
bool is_io_mc = vdev->device_caps & V4L2_CAP_IO_MC;
|
||||
bool has_streaming = vdev->device_caps & V4L2_CAP_STREAMING;
|
||||
bool is_edid = vdev->device_caps & V4L2_CAP_EDID;
|
||||
|
||||
bitmap_zero(valid_ioctls, BASE_VIDIOC_PRIVATE);
|
||||
|
||||
@ -784,6 +785,20 @@ static void determine_valid_ioctls(struct video_device *vdev)
|
||||
SET_VALID_IOCTL(ops, VIDIOC_S_TUNER, vidioc_s_tuner);
|
||||
SET_VALID_IOCTL(ops, VIDIOC_S_HW_FREQ_SEEK, vidioc_s_hw_freq_seek);
|
||||
}
|
||||
if (is_edid) {
|
||||
SET_VALID_IOCTL(ops, VIDIOC_G_EDID, vidioc_g_edid);
|
||||
if (is_tx) {
|
||||
SET_VALID_IOCTL(ops, VIDIOC_G_OUTPUT, vidioc_g_output);
|
||||
SET_VALID_IOCTL(ops, VIDIOC_S_OUTPUT, vidioc_s_output);
|
||||
SET_VALID_IOCTL(ops, VIDIOC_ENUMOUTPUT, vidioc_enum_output);
|
||||
}
|
||||
if (is_rx) {
|
||||
SET_VALID_IOCTL(ops, VIDIOC_ENUMINPUT, vidioc_enum_input);
|
||||
SET_VALID_IOCTL(ops, VIDIOC_G_INPUT, vidioc_g_input);
|
||||
SET_VALID_IOCTL(ops, VIDIOC_S_INPUT, vidioc_s_input);
|
||||
SET_VALID_IOCTL(ops, VIDIOC_S_EDID, vidioc_s_edid);
|
||||
}
|
||||
}
|
||||
|
||||
bitmap_andnot(vdev->valid_ioctls, valid_ioctls, vdev->valid_ioctls,
|
||||
BASE_VIDIOC_PRIVATE);
|
||||
|
Loading…
Reference in New Issue
Block a user