From: Helen Koike <helen.koike@collabora.com>
To: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>,
linux-media@vger.kernel.org, laurent.pinchart@ideasonboard.com
Cc: ezequiel@collabora.com, hverkuil@xs4all.nl, kernel@collabora.com,
dafna3@gmail.com, sakari.ailus@linux.intel.com,
mchehab@kernel.org, tfiga@chromium.org
Subject: Re: [PATCH v3 05/10] media: staging: rkisp1: add capability V4L2_CAP_IO_MC to capture devices
Date: Mon, 3 Aug 2020 20:50:06 -0300 [thread overview]
Message-ID: <54684f7f-fdef-d42e-4cdd-3028f6dc2146@collabora.com> (raw)
In-Reply-To: <20200723132014.4597-6-dafna.hirschfeld@collabora.com>
Hi Dafna,
Thanks for the patch.
On 7/23/20 10:20 AM, Dafna Hirschfeld wrote:
> The capture devices supports YUV, RGB, and Bayer formats.
> Adding V4L2_CAP_IO_MC capability will reflect userspace
> what format should be set on the resizer in order to stream
> each of the video formats.
>
> The patch adds a 'mbus' field to the struct
> 'rkisp1_capture_fmt_cfg' which maps the video format
> to the needed mbus format.
>
> Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
> ---
> drivers/staging/media/rkisp1/rkisp1-capture.c | 60 +++++++++++++++++--
> 1 file changed, 56 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/staging/media/rkisp1/rkisp1-capture.c b/drivers/staging/media/rkisp1/rkisp1-capture.c
> index 27efec004686..5dd91b5f82a4 100644
> --- a/drivers/staging/media/rkisp1/rkisp1-capture.c
> +++ b/drivers/staging/media/rkisp1/rkisp1-capture.c
> @@ -49,12 +49,14 @@ enum rkisp1_plane {
> * @uv_swap: if cb cr swaped, for yuv
> * @write_format: defines how YCbCr self picture data is written to memory
> * @output_format: defines sp output format
> + * @mbus: the mbus code on the src resizer pad that matches the pixel format
> */
> struct rkisp1_capture_fmt_cfg {
> u32 fourcc;
> u8 uv_swap;
> u32 write_format;
> u32 output_format;
> + u32 mbus;
> };
>
> struct rkisp1_capture_ops {
> @@ -88,92 +90,116 @@ static const struct rkisp1_capture_fmt_cfg rkisp1_mp_fmts[] = {
> .fourcc = V4L2_PIX_FMT_YUYV,
> .uv_swap = 0,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_YUVINT,
> + .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
> }, {
> .fourcc = V4L2_PIX_FMT_YUV422P,
> .uv_swap = 0,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_PLA_OR_RAW8,
> + .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
> }, {
> .fourcc = V4L2_PIX_FMT_NV16,
> .uv_swap = 0,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_SPLA,
> + .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
> }, {
> .fourcc = V4L2_PIX_FMT_NV61,
> .uv_swap = 1,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_SPLA,
> + .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
> }, {
> .fourcc = V4L2_PIX_FMT_YVU422M,
> .uv_swap = 1,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_PLA_OR_RAW8,
> + .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
> },
> /* yuv420 */
> {
> .fourcc = V4L2_PIX_FMT_NV21,
> .uv_swap = 1,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_SPLA,
> + .mbus = MEDIA_BUS_FMT_YUYV8_1_5X8,
> }, {
> .fourcc = V4L2_PIX_FMT_NV12,
> .uv_swap = 0,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_SPLA,
> + .mbus = MEDIA_BUS_FMT_YUYV8_1_5X8,
> }, {
> .fourcc = V4L2_PIX_FMT_NV21M,
> .uv_swap = 1,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_SPLA,
> + .mbus = MEDIA_BUS_FMT_YUYV8_1_5X8,
> }, {
> .fourcc = V4L2_PIX_FMT_NV12M,
> .uv_swap = 0,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_SPLA,
> + .mbus = MEDIA_BUS_FMT_YUYV8_1_5X8,
> }, {
> .fourcc = V4L2_PIX_FMT_YUV420,
> .uv_swap = 0,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_PLA_OR_RAW8,
> + .mbus = MEDIA_BUS_FMT_YUYV8_1_5X8,
> }, {
> .fourcc = V4L2_PIX_FMT_YVU420,
> .uv_swap = 1,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_PLA_OR_RAW8,
> + .mbus = MEDIA_BUS_FMT_YUYV8_1_5X8,
> },
> /* yuv400 */
> {
> .fourcc = V4L2_PIX_FMT_GREY,
> .uv_swap = 0,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_YUVINT,
> + .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
> },
> /* raw */
> {
> .fourcc = V4L2_PIX_FMT_SRGGB8,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_PLA_OR_RAW8,
> + .mbus = MEDIA_BUS_FMT_SRGGB8_1X8,
> }, {
> .fourcc = V4L2_PIX_FMT_SGRBG8,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_PLA_OR_RAW8,
> + .mbus = MEDIA_BUS_FMT_SGRBG8_1X8,
> }, {
> .fourcc = V4L2_PIX_FMT_SGBRG8,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_PLA_OR_RAW8,
> + .mbus = MEDIA_BUS_FMT_SGBRG8_1X8,
> }, {
> .fourcc = V4L2_PIX_FMT_SBGGR8,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_YUV_PLA_OR_RAW8,
> + .mbus = MEDIA_BUS_FMT_SBGGR8_1X8,
> }, {
> .fourcc = V4L2_PIX_FMT_SRGGB10,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_RAW12,
> + .mbus = MEDIA_BUS_FMT_SRGGB10_1X10,
> }, {
> .fourcc = V4L2_PIX_FMT_SGRBG10,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_RAW12,
> + .mbus = MEDIA_BUS_FMT_SGRBG10_1X10,
> }, {
> .fourcc = V4L2_PIX_FMT_SGBRG10,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_RAW12,
> + .mbus = MEDIA_BUS_FMT_SGBRG10_1X10,
> }, {
> .fourcc = V4L2_PIX_FMT_SBGGR10,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_RAW12,
> + .mbus = MEDIA_BUS_FMT_SBGGR10_1X10,
> }, {
> .fourcc = V4L2_PIX_FMT_SRGGB12,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_RAW12,
> + .mbus = MEDIA_BUS_FMT_SRGGB12_1X12,
> }, {
> .fourcc = V4L2_PIX_FMT_SGRBG12,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_RAW12,
> + .mbus = MEDIA_BUS_FMT_SGRBG12_1X12,
> }, {
> .fourcc = V4L2_PIX_FMT_SGBRG12,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_RAW12,
> + .mbus = MEDIA_BUS_FMT_SGBRG12_1X12,
> }, {
> .fourcc = V4L2_PIX_FMT_SBGGR12,
> .write_format = RKISP1_MI_CTRL_MP_WRITE_RAW12,
> + .mbus = MEDIA_BUS_FMT_SBGGR12_1X12,
> },
> };
>
> @@ -184,26 +210,31 @@ static const struct rkisp1_capture_fmt_cfg rkisp1_sp_fmts[] = {
> .uv_swap = 0,
> .write_format = RKISP1_MI_CTRL_SP_WRITE_INT,
> .output_format = RKISP1_MI_CTRL_SP_OUTPUT_YUV422,
> + .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
> }, {
> .fourcc = V4L2_PIX_FMT_YUV422P,
> .uv_swap = 0,
> .write_format = RKISP1_MI_CTRL_SP_WRITE_PLA,
> .output_format = RKISP1_MI_CTRL_SP_OUTPUT_YUV422,
> + .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
> }, {
> .fourcc = V4L2_PIX_FMT_NV16,
> .uv_swap = 0,
> .write_format = RKISP1_MI_CTRL_SP_WRITE_SPLA,
> .output_format = RKISP1_MI_CTRL_SP_OUTPUT_YUV422,
> + .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
> }, {
> .fourcc = V4L2_PIX_FMT_NV61,
> .uv_swap = 1,
> .write_format = RKISP1_MI_CTRL_SP_WRITE_SPLA,
> .output_format = RKISP1_MI_CTRL_SP_OUTPUT_YUV422,
> + .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
> }, {
> .fourcc = V4L2_PIX_FMT_YVU422M,
> .uv_swap = 1,
> .write_format = RKISP1_MI_CTRL_SP_WRITE_PLA,
> .output_format = RKISP1_MI_CTRL_SP_OUTPUT_YUV422,
> + .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
> },
> /* yuv420 */
> {
> @@ -211,31 +242,37 @@ static const struct rkisp1_capture_fmt_cfg rkisp1_sp_fmts[] = {
> .uv_swap = 1,
> .write_format = RKISP1_MI_CTRL_SP_WRITE_SPLA,
> .output_format = RKISP1_MI_CTRL_SP_OUTPUT_YUV420,
> + .mbus = MEDIA_BUS_FMT_YUYV8_1_5X8,
> }, {
> .fourcc = V4L2_PIX_FMT_NV12,
> .uv_swap = 0,
> .write_format = RKISP1_MI_CTRL_SP_WRITE_SPLA,
> .output_format = RKISP1_MI_CTRL_SP_OUTPUT_YUV420,
> + .mbus = MEDIA_BUS_FMT_YUYV8_1_5X8,
> }, {
> .fourcc = V4L2_PIX_FMT_NV21M,
> .uv_swap = 1,
> .write_format = RKISP1_MI_CTRL_SP_WRITE_SPLA,
> .output_format = RKISP1_MI_CTRL_SP_OUTPUT_YUV420,
> + .mbus = MEDIA_BUS_FMT_YUYV8_1_5X8,
> }, {
> .fourcc = V4L2_PIX_FMT_NV12M,
> .uv_swap = 0,
> .write_format = RKISP1_MI_CTRL_SP_WRITE_SPLA,
> .output_format = RKISP1_MI_CTRL_SP_OUTPUT_YUV420,
> + .mbus = MEDIA_BUS_FMT_YUYV8_1_5X8,
> }, {
> .fourcc = V4L2_PIX_FMT_YUV420,
> .uv_swap = 0,
> .write_format = RKISP1_MI_CTRL_SP_WRITE_PLA,
> .output_format = RKISP1_MI_CTRL_SP_OUTPUT_YUV420,
> + .mbus = MEDIA_BUS_FMT_YUYV8_1_5X8,
> }, {
> .fourcc = V4L2_PIX_FMT_YVU420,
> .uv_swap = 1,
> .write_format = RKISP1_MI_CTRL_SP_WRITE_PLA,
> .output_format = RKISP1_MI_CTRL_SP_OUTPUT_YUV420,
> + .mbus = MEDIA_BUS_FMT_YUYV8_1_5X8,
> },
> /* yuv400 */
> {
> @@ -243,16 +280,19 @@ static const struct rkisp1_capture_fmt_cfg rkisp1_sp_fmts[] = {
> .uv_swap = 0,
> .write_format = RKISP1_MI_CTRL_SP_WRITE_INT,
> .output_format = RKISP1_MI_CTRL_SP_OUTPUT_YUV400,
> + .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
> },
> /* rgb */
> {
> .fourcc = V4L2_PIX_FMT_XBGR32,
> .write_format = RKISP1_MI_CTRL_SP_WRITE_PLA,
> .output_format = RKISP1_MI_CTRL_SP_OUTPUT_RGB888,
> + .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
> }, {
> .fourcc = V4L2_PIX_FMT_RGB565,
> .write_format = RKISP1_MI_CTRL_SP_WRITE_PLA,
> .output_format = RKISP1_MI_CTRL_SP_OUTPUT_RGB565,
> + .mbus = MEDIA_BUS_FMT_YUYV8_2X8,
> },
> };
>
> @@ -1107,11 +1147,23 @@ static int rkisp1_enum_fmt_vid_cap_mplane(struct file *file, void *priv,
> struct rkisp1_capture *cap = video_drvdata(file);
> const struct rkisp1_capture_fmt_cfg *fmt = NULL;
>
> - if (f->index >= cap->config->fmt_size)
> + if (f->mbus_code) {
> + int i, n = 0;
unsigned
> +
> + for (i = 0; i < cap->config->fmt_size; i++)
> + if (cap->config->fmts[i].mbus == f->mbus_code)
> + if (n++ == f->index) {
> + f->pixelformat = cap->config->fmts[i].fourcc;
> + return 0;
> + }
> return -EINVAL;
> + } else {
> + if (f->index >= cap->config->fmt_size)
> + return -EINVAL;
>
> - fmt = &cap->config->fmts[f->index];
> - f->pixelformat = fmt->fourcc;
> + fmt = &cap->config->fmts[f->index];
> + f->pixelformat = fmt->fourcc;
> + }
>
> return 0;
Maybe remove one level of indentation by checking first:
if (!f->mbus_code) {
...
return 0;
}
// the else case without an else statement
Thanks,
Helen
> }
> @@ -1261,7 +1313,7 @@ static int rkisp1_register_capture(struct rkisp1_capture *cap)
> vdev->v4l2_dev = v4l2_dev;
> vdev->lock = &node->vlock;
> vdev->device_caps = V4L2_CAP_VIDEO_CAPTURE_MPLANE |
> - V4L2_CAP_STREAMING;
> + V4L2_CAP_STREAMING | V4L2_CAP_IO_MC;
> vdev->entity.ops = &rkisp1_media_ops;
> video_set_drvdata(vdev, cap);
> vdev->vfl_dir = VFL_DIR_RX;
>
next prev parent reply other threads:[~2020-08-03 23:50 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-23 13:20 [PATCH v3 00/10] media: staging: rkisp1: add support to V4L2_CAP_IO_MC Dafna Hirschfeld
2020-07-23 13:20 ` [PATCH v3 01/10] media: staging: rkisp1: cap: change RGB24 format to XBGR32 Dafna Hirschfeld
2020-08-03 23:49 ` Helen Koike
2020-08-31 16:33 ` Dafna Hirschfeld
2020-07-23 13:20 ` [PATCH v3 02/10] media: staging: rkisp1: cap: remove unsupported formats Dafna Hirschfeld
2020-07-23 13:20 ` [PATCH v3 03/10] media: staging: rkisp1: cap: remove unsupported format YUV444 Dafna Hirschfeld
2020-08-03 23:49 ` Helen Koike
2020-07-23 13:20 ` [PATCH v3 04/10] media: staging: rkisp1: don't support bayer format on selfpath resizer Dafna Hirschfeld
2020-08-03 23:49 ` Helen Koike
2020-07-23 13:20 ` [PATCH v3 05/10] media: staging: rkisp1: add capability V4L2_CAP_IO_MC to capture devices Dafna Hirschfeld
2020-08-03 23:50 ` Helen Koike
2020-08-03 23:50 ` Helen Koike [this message]
2020-07-23 13:20 ` [PATCH v3 06/10] media: staging: rkisp1: add a helper function to enumerate supported mbus formats on capture Dafna Hirschfeld
2020-08-03 23:49 ` Helen Koike
2020-08-29 17:39 ` Dafna Hirschfeld
2020-08-30 14:43 ` Tomasz Figa
2020-08-31 13:02 ` Dafna Hirschfeld
2020-07-23 13:20 ` [PATCH v3 07/10] media: staging: rkisp1: rsz: enumerate the formats on the src pad according to the capture Dafna Hirschfeld
2020-08-03 23:50 ` Helen Koike
2020-08-29 17:53 ` Dafna Hirschfeld
2020-08-29 20:48 ` Tomasz Figa
2020-07-23 13:20 ` [PATCH v3 08/10] media: staging: rkisp1: rsz: Add support to more YUV encoded mbus codes on src pad Dafna Hirschfeld
2020-07-23 13:20 ` [PATCH v3 09/10] media: rkisp1: cap: simplify the link validation by compering the media bus code Dafna Hirschfeld
2020-09-30 19:00 ` Niklas Söderlund
2020-10-01 2:03 ` Laurent Pinchart
2020-10-01 19:36 ` Dafna Hirschfeld
2020-10-01 22:48 ` Laurent Pinchart
2020-10-02 7:04 ` Dafna Hirschfeld
2020-10-22 11:02 ` Helen Koike
2020-07-23 13:20 ` [PATCH v3 10/10] media: staging: rkisp1: fix configuration for GREY pixelformat Dafna Hirschfeld
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=54684f7f-fdef-d42e-4cdd-3028f6dc2146@collabora.com \
--to=helen.koike@collabora.com \
--cc=dafna.hirschfeld@collabora.com \
--cc=dafna3@gmail.com \
--cc=ezequiel@collabora.com \
--cc=hverkuil@xs4all.nl \
--cc=kernel@collabora.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=sakari.ailus@linux.intel.com \
--cc=tfiga@chromium.org \
/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).