If V4L2_FMT_FLAG_ALL_FORMATS flag has been set when calling VIDIOC_ENUM_FMT ignore depth match and returns all the hardware supported pixels formats. Signed-off-by: Benjamin Gaignard <benjamin.gaignard@xxxxxxxxxxxxx> --- drivers/media/platform/verisilicon/hantro_v4l2.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/media/platform/verisilicon/hantro_v4l2.c b/drivers/media/platform/verisilicon/hantro_v4l2.c index 941fa23c211a..6d840911c764 100644 --- a/drivers/media/platform/verisilicon/hantro_v4l2.c +++ b/drivers/media/platform/verisilicon/hantro_v4l2.c @@ -201,7 +201,13 @@ static int vidioc_enum_fmt(struct file *file, void *priv, struct hantro_ctx *ctx = fh_to_ctx(priv); const struct hantro_fmt *fmt, *formats; unsigned int num_fmts, i, j = 0; - bool skip_mode_none; + bool skip_mode_none, ignore_depth_match; + + /* + * If V4L2_FMT_FLAG_ALL_FORMATS flag is set, we want to enumerate all + * hardware supported pixels formats + */ + ignore_depth_match = !!(f->flags & V4L2_FMT_FLAG_ALL_FORMATS); /* * When dealing with an encoder: @@ -222,7 +228,7 @@ static int vidioc_enum_fmt(struct file *file, void *priv, if (skip_mode_none == mode_none) continue; - if (!hantro_check_depth_match(fmt, ctx->bit_depth)) + if (!hantro_check_depth_match(fmt, ctx->bit_depth) && !ignore_depth_match) continue; if (j == f->index) { f->pixelformat = fmt->fourcc; @@ -242,7 +248,7 @@ static int vidioc_enum_fmt(struct file *file, void *priv, for (i = 0; i < num_fmts; i++) { fmt = &formats[i]; - if (!hantro_check_depth_match(fmt, ctx->bit_depth)) + if (!hantro_check_depth_match(fmt, ctx->bit_depth) && !ignore_depth_match) continue; if (j == f->index) { f->pixelformat = fmt->fourcc; -- 2.40.1