media: rcar-vin: Do not enumerate unsupported pixel formats
If a pixel format is not supported by the hardware NULL is returned by rvin_format_from_pixel() for that fourcc. Verify that the pixel format is supported using this or skip it when enumerating. Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
Родитель
1091eb8306
Коммит
8f49006174
|
@ -296,12 +296,22 @@ static int rvin_g_fmt_vid_cap(struct file *file, void *priv,
|
||||||
static int rvin_enum_fmt_vid_cap(struct file *file, void *priv,
|
static int rvin_enum_fmt_vid_cap(struct file *file, void *priv,
|
||||||
struct v4l2_fmtdesc *f)
|
struct v4l2_fmtdesc *f)
|
||||||
{
|
{
|
||||||
if (f->index >= ARRAY_SIZE(rvin_formats))
|
struct rvin_dev *vin = video_drvdata(file);
|
||||||
return -EINVAL;
|
unsigned int i;
|
||||||
|
int matched;
|
||||||
|
|
||||||
f->pixelformat = rvin_formats[f->index].fourcc;
|
matched = -1;
|
||||||
|
for (i = 0; i < ARRAY_SIZE(rvin_formats); i++) {
|
||||||
|
if (rvin_format_from_pixel(vin, rvin_formats[i].fourcc))
|
||||||
|
matched++;
|
||||||
|
|
||||||
|
if (matched == f->index) {
|
||||||
|
f->pixelformat = rvin_formats[i].fourcc;
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int rvin_g_selection(struct file *file, void *fh,
|
static int rvin_g_selection(struct file *file, void *fh,
|
||||||
|
|
Загрузка…
Ссылка в новой задаче