Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0b1d4249 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Mauro Carvalho Chehab
Browse files

[media] v4l: omap4iss: Add enum_fmt_vid_cap ioctl support



List the pixel formats compatible with the active format currently
configured on the connected pad.

Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent cc3c2ac2
Loading
Loading
Loading
Loading
+36 −0
Original line number Diff line number Diff line
@@ -495,6 +495,41 @@ iss_video_querycap(struct file *file, void *fh, struct v4l2_capability *cap)
	return 0;
}

static int
iss_video_enum_format(struct file *file, void *fh, struct v4l2_fmtdesc *f)
{
	struct iss_video *video = video_drvdata(file);
	struct v4l2_mbus_framefmt format;
	unsigned int index = f->index;
	unsigned int i;
	int ret;

	if (f->type != video->type)
		return -EINVAL;

	ret = __iss_video_get_format(video, &format);
	if (ret < 0)
		return ret;

	for (i = 0; i < ARRAY_SIZE(formats); ++i) {
		const struct iss_format_info *info = &formats[i];

		if (format.code != info->code)
			continue;

		if (index == 0) {
			f->pixelformat = info->pixelformat;
			strlcpy(f->description, info->description,
				sizeof(f->description));
			return 0;
		}

		index--;
	}

	return -EINVAL;
}

static int
iss_video_get_format(struct file *file, void *fh, struct v4l2_format *format)
{
@@ -918,6 +953,7 @@ iss_video_s_input(struct file *file, void *fh, unsigned int input)

static const struct v4l2_ioctl_ops iss_video_ioctl_ops = {
	.vidioc_querycap		= iss_video_querycap,
	.vidioc_enum_fmt_vid_cap        = iss_video_enum_format,
	.vidioc_g_fmt_vid_cap		= iss_video_get_format,
	.vidioc_s_fmt_vid_cap		= iss_video_set_format,
	.vidioc_try_fmt_vid_cap		= iss_video_try_format,