From: Steve Longerbeam <slongerbeam@gmail.com>
To: linux-media@vger.kernel.org
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Philipp Zabel <p.zabel@pengutronix.de>,
Rui Miguel Silva <rmfrfs@gmail.com>
Subject: [PATCH 02/10] media: imx: utils: fix media bus format enumeration
Date: Thu, 26 Mar 2020 12:05:36 -0700 [thread overview]
Message-ID: <20200326190544.16349-3-slongerbeam@gmail.com> (raw)
In-Reply-To: <20200326190544.16349-1-slongerbeam@gmail.com>
From: Philipp Zabel <p.zabel@pengutronix.de>
Iterate over all media bus formats, not just over the first format in
each imx_media_pixfmt entry.
Before:
$ v4l2-ctl -d $(media-ctl -e ipu1_csi0) --list-subdev-mbus-codes 0
ioctl: VIDIOC_SUBDEV_ENUM_MBUS_CODE (pad=0)
0x2006: MEDIA_BUS_FMT_UYVY8_2X8
0x2008: MEDIA_BUS_FMT_YUYV8_2X8
0x1008: MEDIA_BUS_FMT_RGB565_2X8_LE
0x100a: MEDIA_BUS_FMT_RGB888_1X24
0x100d: MEDIA_BUS_FMT_ARGB8888_1X32
0x3001: MEDIA_BUS_FMT_SBGGR8_1X8
0x3013: MEDIA_BUS_FMT_SGBRG8_1X8
0x3002: MEDIA_BUS_FMT_SGRBG8_1X8
0x3014: MEDIA_BUS_FMT_SRGGB8_1X8
0x3007: MEDIA_BUS_FMT_SBGGR10_1X10
0x300e: MEDIA_BUS_FMT_SGBRG10_1X10
0x300a: MEDIA_BUS_FMT_SGRBG10_1X10
0x300f: MEDIA_BUS_FMT_SRGGB10_1X10
0x2001: MEDIA_BUS_FMT_Y8_1X8
0x200a: MEDIA_BUS_FMT_Y10_1X10
After:
$ v4l2-ctl -d $(media-ctl -e ipu1_csi0) --list-subdev-mbus-codes 0
ioctl: VIDIOC_SUBDEV_ENUM_MBUS_CODE (pad=0)
0x2006: MEDIA_BUS_FMT_UYVY8_2X8
0x200f: MEDIA_BUS_FMT_UYVY8_1X16
0x2008: MEDIA_BUS_FMT_YUYV8_2X8
0x2011: MEDIA_BUS_FMT_YUYV8_1X16
0x1008: MEDIA_BUS_FMT_RGB565_2X8_LE
0x100a: MEDIA_BUS_FMT_RGB888_1X24
0x100c: MEDIA_BUS_FMT_RGB888_2X12_LE
0x100d: MEDIA_BUS_FMT_ARGB8888_1X32
0x3001: MEDIA_BUS_FMT_SBGGR8_1X8
0x3013: MEDIA_BUS_FMT_SGBRG8_1X8
0x3002: MEDIA_BUS_FMT_SGRBG8_1X8
0x3014: MEDIA_BUS_FMT_SRGGB8_1X8
0x3007: MEDIA_BUS_FMT_SBGGR10_1X10
0x3008: MEDIA_BUS_FMT_SBGGR12_1X12
0x3019: MEDIA_BUS_FMT_SBGGR14_1X14
0x301d: MEDIA_BUS_FMT_SBGGR16_1X16
0x300e: MEDIA_BUS_FMT_SGBRG10_1X10
0x3010: MEDIA_BUS_FMT_SGBRG12_1X12
0x301a: MEDIA_BUS_FMT_SGBRG14_1X14
0x301e: MEDIA_BUS_FMT_SGBRG16_1X16
0x300a: MEDIA_BUS_FMT_SGRBG10_1X10
0x3011: MEDIA_BUS_FMT_SGRBG12_1X12
0x301b: MEDIA_BUS_FMT_SGRBG14_1X14
0x301f: MEDIA_BUS_FMT_SGRBG16_1X16
0x300f: MEDIA_BUS_FMT_SRGGB10_1X10
0x3012: MEDIA_BUS_FMT_SRGGB12_1X12
0x301c: MEDIA_BUS_FMT_SRGGB14_1X14
0x3020: MEDIA_BUS_FMT_SRGGB16_1X16
0x2001: MEDIA_BUS_FMT_Y8_1X8
0x200a: MEDIA_BUS_FMT_Y10_1X10
0x2013: MEDIA_BUS_FMT_Y12_1X12
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
---
drivers/staging/media/imx/imx-media-utils.c | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/drivers/staging/media/imx/imx-media-utils.c b/drivers/staging/media/imx/imx-media-utils.c
index 8ff175b08836..97568a6ee101 100644
--- a/drivers/staging/media/imx/imx-media-utils.c
+++ b/drivers/staging/media/imx/imx-media-utils.c
@@ -264,7 +264,7 @@ static int enum_format(u32 *fourcc, u32 *code, u32 index,
bool allow_bayer)
{
const struct imx_media_pixfmt *fmt;
- unsigned int i, match_index = 0;
+ unsigned int i, j = 0, match_index = 0;
for (i = 0; i < ARRAY_SIZE(pixel_formats); i++) {
enum codespace_sel fmt_cs_sel;
@@ -278,18 +278,29 @@ static int enum_format(u32 *fourcc, u32 *code, u32 index,
(!allow_bayer && fmt->bayer))
continue;
- if (index == match_index)
+ if (fourcc && index == match_index)
break;
- match_index++;
+ if (!code) {
+ match_index++;
+ continue;
+ }
+
+ for (j = 0; j < ARRAY_SIZE(fmt->codes) && fmt->codes[j]; j++) {
+ if (index == match_index)
+ goto out;
+
+ match_index++;
+ }
}
if (i == ARRAY_SIZE(pixel_formats))
return -EINVAL;
+out:
if (fourcc)
*fourcc = fmt->fourcc;
if (code)
- *code = fmt->codes[0];
+ *code = fmt->codes[j];
return 0;
}
--
2.17.1
next prev parent reply other threads:[~2020-03-26 19:05 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-26 19:05 [PATCH 00/10] media: imx: Miscellaneous format-related cleanups Steve Longerbeam
2020-03-26 19:05 ` [PATCH 01/10] media: imx: utils: fix and simplify pixel format enumeration Steve Longerbeam
2020-03-26 19:05 ` Steve Longerbeam [this message]
2020-03-26 19:05 ` [PATCH 03/10] media: imx: utils: Inline init_mbus_colorimetry() in its caller Steve Longerbeam
2020-03-26 19:05 ` [PATCH 04/10] media: imx: utils: Handle Bayer format lookup through a selection flag Steve Longerbeam
2020-03-26 19:05 ` [PATCH 05/10] media: imx: utils: Simplify IPU format lookup and enumeration Steve Longerbeam
2020-03-26 19:05 ` [PATCH 06/10] media: imx: utils: Make imx_media_pixfmt handle variable number of codes Steve Longerbeam
2020-03-26 19:05 ` [PATCH 07/10] media: imx: utils: Remove unneeded argument to (find|enum)_format() Steve Longerbeam
2020-03-26 19:05 ` [PATCH 08/10] media: imx: utils: Rename format lookup and enumeration functions Steve Longerbeam
2020-03-26 19:05 ` [PATCH 09/10] media: imx: utils: Constify mbus argument to imx_media_mbus_fmt_to_pix_fmt Steve Longerbeam
2020-03-26 19:05 ` [PATCH 10/10] media: imx: utils: Split find|enum_format into fourcc and mbus functions Steve Longerbeam
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200326190544.16349-3-slongerbeam@gmail.com \
--to=slongerbeam@gmail.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=p.zabel@pengutronix.de \
--cc=rmfrfs@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).