[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: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
This commit is contained in:
parent
cc3c2ac291
commit
0b1d424966
1 changed files with 36 additions and 0 deletions
|
@ -495,6 +495,41 @@ iss_video_querycap(struct file *file, void *fh, struct v4l2_capability *cap)
|
||||||
return 0;
|
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
|
static int
|
||||||
iss_video_get_format(struct file *file, void *fh, struct v4l2_format *format)
|
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 = {
|
static const struct v4l2_ioctl_ops iss_video_ioctl_ops = {
|
||||||
.vidioc_querycap = iss_video_querycap,
|
.vidioc_querycap = iss_video_querycap,
|
||||||
|
.vidioc_enum_fmt_vid_cap = iss_video_enum_format,
|
||||||
.vidioc_g_fmt_vid_cap = iss_video_get_format,
|
.vidioc_g_fmt_vid_cap = iss_video_get_format,
|
||||||
.vidioc_s_fmt_vid_cap = iss_video_set_format,
|
.vidioc_s_fmt_vid_cap = iss_video_set_format,
|
||||||
.vidioc_try_fmt_vid_cap = iss_video_try_format,
|
.vidioc_try_fmt_vid_cap = iss_video_try_format,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue