From cf61755ed88485ab12c049e57d05b41a59ec71e4 Mon Sep 17 00:00:00 2001 From: Suresh Gupta Date: Fri, 5 Oct 2018 19:42:57 +0530 Subject: [PATCH] v4l: xilinx-multi-scaler: ENUM_FMT map index with enabled format Returns formats which are enabled in DT. Signed-off-by: Suresh Gupta Reviewed-by: Hyun Kwon Reviewed-by: Satish Kumar Nagireddy Signed-off-by: Michal Simek --- drivers/media/platform/xilinx/xilinx-multi-scaler.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/media/platform/xilinx/xilinx-multi-scaler.c b/drivers/media/platform/xilinx/xilinx-multi-scaler.c index d6cf76d9c81f..96d7c013c148 100644 --- a/drivers/media/platform/xilinx/xilinx-multi-scaler.c +++ b/drivers/media/platform/xilinx/xilinx-multi-scaler.c @@ -1233,14 +1233,19 @@ static int xm2msc_g_fmt_vid_cap(struct file *file, void *fh, static int enum_fmt(struct xm2m_msc_dev *xm2msc, struct v4l2_fmtdesc *f) { const struct xm2msc_fmt *fmt; + unsigned int i, enabled = 0; - if (f->index == ARRAY_SIZE(formats) || - !xm2msc_chk_fmt(xm2msc, f->index)) + for (i = 0; i < ARRAY_SIZE(formats); i++) { + if (xm2msc_chk_fmt(xm2msc, i) && enabled++ == f->index) + break; + } + + if (i == ARRAY_SIZE(formats)) /* Format not found */ return -EINVAL; /* Format found */ - fmt = &formats[f->index]; + fmt = &formats[i]; strlcpy(f->description, fmt->name, sizeof(f->description)); f->pixelformat = fmt->fourcc; -- 2.39.2