From: Steve Longerbeam <slongerbeam@gmail.com>
To: Hans Verkuil <hverkuil@xs4all.nl>,
Philipp Zabel <p.zabel@pengutronix.de>,
linux-media@vger.kernel.org
Cc: kernel@pengutronix.de
Subject: Re: [PATCH 3/3] media: imx: fix media bus format enumeration
Date: Fri, 25 Oct 2019 14:48:37 -0700 [thread overview]
Message-ID: <6547e18f-e3d5-4e80-4e20-5eaf9ee0b86c@gmail.com> (raw)
In-Reply-To: <d30091d5-5e45-9682-7c23-813eff2b42c5@xs4all.nl>
Hi Hans,
On 9/27/19 12:33 AM, Hans Verkuil wrote:
> On 9/12/19 6:01 PM, Philipp Zabel wrote:
>> 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 d61a8f4533dc..5f8604db4dd4 100644
>> --- a/drivers/staging/media/imx/imx-media-utils.c
>> +++ b/drivers/staging/media/imx/imx-media-utils.c
>> @@ -254,7 +254,7 @@ static int enum_format(u32 *fourcc, u32 *code, u32 index,
>> bool allow_bayer)
>> {
> This function is becoming confusing. I think you should add some comments explaining
> what the function does. Specifically the fourcc and code arguments.
>
> Can both be non-NULL? Or only one of the two? I think that if fourcc is non-NULL you
> enumerate over the V4L2 pixelformats, if code is non-NULL, then you enumerate over
> the mediabus codes.
>
> If so, then I think it would be easier to understand if you just make two functions:
> enum_formats and enum_codes, rather than trying to merge them into one.
I don't think the function is that confusing, but I'm fine with
splitting it into enum_formats() and enum_codes().
I do agree it needs some comments describing how it works. I think my
suggestion to rename the index that counts entries that match the search
criteria to "match_index" will also help to follow the code.
Steve
>
> Patches 1 and 2 of this series look good, so I'll take those.
>
> Regards,
>
> Hans
>
>> const struct imx_media_pixfmt *fmt;
>> - unsigned int i, j = 0;
>> + unsigned int i, j, k = 0;
>>
>> for (i = 0; i < ARRAY_SIZE(pixel_formats); i++) {
>> fmt = &pixel_formats[i];
>> @@ -264,18 +264,29 @@ static int enum_format(u32 *fourcc, u32 *code, u32 index,
>> (!allow_bayer && fmt->bayer))
>> continue;
>>
>> - if (index == j)
>> + if (fourcc && index == k)
>> break;
>>
>> - j++;
>> + if (!code) {
>> + k++;
>> + continue;
>> + }
>> +
>> + for (j = 0; j < ARRAY_SIZE(fmt->codes) && fmt->codes[j]; j++) {
>> + if (index == k)
>> + goto out;
>> +
>> + k++;
>> + }
>> }
>> 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;
>> }
>>
next prev parent reply other threads:[~2019-10-25 21:48 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-12 16:01 [PATCH 1/3] media: imx: enable V4L2_PIX_FMT_XBGR32, _BGRX32, and _RGBX32 Philipp Zabel
2019-09-12 16:01 ` [PATCH 2/3] media: imx: fix and simplify pixel format enumeration Philipp Zabel
2019-09-14 3:36 ` kbuild test robot
2019-09-27 8:03 ` Hans Verkuil
2019-10-25 21:43 ` Steve Longerbeam
2019-09-12 16:01 ` [PATCH 3/3] media: imx: fix media bus " Philipp Zabel
2019-09-14 3:49 ` kbuild test robot
2019-09-27 7:33 ` Hans Verkuil
2019-10-25 21:48 ` Steve Longerbeam [this message]
2019-10-25 22:59 ` 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=6547e18f-e3d5-4e80-4e20-5eaf9ee0b86c@gmail.com \
--to=slongerbeam@gmail.com \
--cc=hverkuil@xs4all.nl \
--cc=kernel@pengutronix.de \
--cc=linux-media@vger.kernel.org \
--cc=p.zabel@pengutronix.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.