From: "CK Hu (胡俊光)" <ck.hu@mediatek.com>
To: "sumit.semwal@linaro.org" <sumit.semwal@linaro.org>,
"christian.koenig@amd.com" <christian.koenig@amd.com>,
"mchehab@kernel.org" <mchehab@kernel.org>,
"conor+dt@kernel.org" <conor+dt@kernel.org>,
"robh@kernel.org" <robh@kernel.org>,
"matthias.bgg@gmail.com" <matthias.bgg@gmail.com>,
"krzk+dt@kernel.org" <krzk+dt@kernel.org>,
"AngeloGioacchino Del Regno"
<angelogioacchino.delregno@collabora.com>,
"Shu-hsiang Yang (楊舒翔)" <Shu-hsiang.Yang@mediatek.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-mediatek@lists.infradead.org"
<linux-mediatek@lists.infradead.org>,
"yunkec@chromium.org" <yunkec@chromium.org>,
"linaro-mm-sig@lists.linaro.org" <linaro-mm-sig@lists.linaro.org>,
"linux-media@vger.kernel.org" <linux-media@vger.kernel.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"Yaya Chang (張雅清)" <Yaya.Chang@mediatek.com>,
Project_Global_Chrome_Upstream_Group
<Project_Global_Chrome_Upstream_Group@mediatek.com>,
"dri-devel@lists.freedesktop.org"
<dri-devel@lists.freedesktop.org>,
"Teddy Chen (陳乾元)" <Teddy.Chen@mediatek.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"hidenorik@chromium.org" <hidenorik@chromium.org>,
"Shun-Yi Wang (王順億)" <Shun-Yi.Wang@mediatek.com>
Subject: Re: [PATCH v1 07/10] media: platform: mediatek: add isp_7x video ops
Date: Wed, 20 Nov 2024 01:05:43 +0000 [thread overview]
Message-ID: <558a6847ee699ecafdb015864cde2bb42babee33.camel@mediatek.com> (raw)
In-Reply-To: <20241009111551.27052-8-Shu-hsiang.Yang@mediatek.com>
Hi, Shu-hsiang:
On Wed, 2024-10-09 at 19:15 +0800, Shu-hsiang Yang wrote:
> Introduces the V4L2 video interface and feature management for the
> MediaTek ISP7x CAMSYS. These interfaces include various functionalities,
> such as video operation initialization and registration. They also
> manage MediaTek-specific formats and handle buffers for MediaTek camera
> video devices. This integrates CAMSYS functionalities to be compatible
> with the V4L2 framework.
>
> Signed-off-by: Shu-hsiang Yang <Shu-hsiang.Yang@mediatek.com>
> ---
[snip]
> +int mtk_cam_video_register(struct mtk_cam_video_device *video,
> + struct v4l2_device *v4l2_dev)
> +{
> + struct mtk_cam_device *cam =
> + container_of(v4l2_dev, struct mtk_cam_device, v4l2_dev);
> + struct media_pad *pad = &video->pad;
> + struct video_device *vdev = &video->vdev;
> + struct vb2_queue *q = &video->vb2_q;
> + unsigned int output = V4L2_TYPE_IS_OUTPUT(video->desc.buf_type);
> + int ret;
> +
> + if (video->desc.link_flags & MEDIA_LNK_FL_ENABLED)
> + video->enabled = true;
> + else
> + video->enabled = false;
> +
> + mutex_init(&video->q_lock);
> +
> + /* initialize vb2_queue */
> + q->type = video->desc.buf_type;
> + q->io_modes = VB2_MMAP | VB2_DMABUF;
> +
> + if (q->type == V4L2_BUF_TYPE_META_OUTPUT)
> + q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
> + else
> + q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_BOOTIME;
Why V4L2_BUF_TYPE_META_OUTPUT use different timestamp flag?
Different output data is generate at the same time,
so use the same timestamp so we are able to link these output data to the same frame.
And I could not find anywhere to define V4L2_BUF_FLAG_TIMESTAMP_BOOTIME.
So drop V4L2_BUF_FLAG_TIMESTAMP_BOOTIME and use V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC for all queue.
Regards,
CK
> +
> + if (video->desc.smem_alloc) {
> + q->bidirectional = 1;
> + /* reserved memory */
> + q->dev = cam->smem_dev;
> + } else if (is_yuv_node(video->desc.id)) {
> + q->dev = cam->raw.yuvs[0];
> + } else {
> + q->dev = cam->raw.devs[0];
> + }
> +
> + q->supports_requests = true;
> + q->lock = &video->q_lock;
> + q->ops = &mtk_cam_vb2_ops;
> + q->mem_ops = &vb2_dma_contig_memops;
> + q->drv_priv = cam;
> + q->buf_struct_size = sizeof(struct mtk_cam_buffer);
> +
> + if (output)
> + q->timestamp_flags |= V4L2_BUF_FLAG_TSTAMP_SRC_EOF;
> + else
> + q->timestamp_flags |= V4L2_BUF_FLAG_TSTAMP_SRC_SOE;
> +
> + /* No minimum buffers limitation */
> + q->min_queued_buffers = 0;
> +
> + ret = vb2_queue_init(q);
> + if (ret < 0) {
> + dev_info(v4l2_dev->dev, "Failed to init vb2 queue: %d\n", ret);
> + goto error_vb2_init;
> + }
> +
> + pad->flags = output ? MEDIA_PAD_FL_SOURCE : MEDIA_PAD_FL_SINK;
> + ret = media_entity_pads_init(&vdev->entity, 1, pad);
> + if (ret < 0) {
> + dev_info(v4l2_dev->dev, "Failed to init video entity: %d\n", ret);
> + goto error_media_init;
> + }
> +
> + ret = mtk_video_init_format(video);
> + if (ret < 0) {
> + dev_info(v4l2_dev->dev, "Failed to init format: %d\n", ret);
> + goto error_video_register;
> + }
> +
> + vdev->entity.function = MEDIA_ENT_F_IO_V4L;
> + vdev->entity.ops = NULL;
> + vdev->fops = &mtk_cam_v4l2_fops;
> + vdev->device_caps = video->desc.cap | V4L2_CAP_STREAMING;
> + vdev->v4l2_dev = v4l2_dev;
> +
> + vdev->vfl_dir = output ? VFL_DIR_TX : VFL_DIR_RX;
> + vdev->queue = &video->vb2_q;
> + vdev->ioctl_ops = video->desc.ioctl_ops;
> + vdev->release = video_device_release_empty;
> + /* share q_lock */
> + vdev->lock = &video->q_lock;
> + strscpy(vdev->name, video->desc.name, sizeof(vdev->name));
> +
> + ret = video_register_device(vdev, VFL_TYPE_VIDEO, -1);
> + if (ret < 0) {
> + dev_info(v4l2_dev->dev, "Failed to register video device: %d\n",
> + ret);
> + goto error_video_register;
> + }
> + video_set_drvdata(vdev, cam);
> +
> + dev_dbg(v4l2_dev->dev, "registered vdev:%d:%s\n",
> + video->desc.id, vdev->name);
> +
> + return 0;
> +
> +error_video_register:
> + media_entity_cleanup(&vdev->entity);
> +error_media_init:
> + vb2_queue_release(&video->vb2_q);
> +error_vb2_init:
> + mutex_destroy(&video->q_lock);
> +
> + return ret;
> +}
> +
next prev parent reply other threads:[~2024-11-20 1:05 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-09 11:15 [PATCH v1 00/10] Add MediaTek ISP7 camera system driver Shu-hsiang Yang
2024-10-09 11:15 ` [PATCH v1 01/10] dt-bindings: media: mediatek: add camsys device Shu-hsiang Yang
2024-10-09 21:00 ` Rob Herring
2024-10-11 1:29 ` CK Hu (胡俊光)
2024-10-11 3:20 ` CK Hu (胡俊光)
2024-10-22 5:36 ` Krzysztof Kozlowski
2024-11-11 1:37 ` CK Hu (胡俊光)
2024-11-11 2:38 ` CK Hu (胡俊光)
2024-10-09 11:15 ` [PATCH v1 02/10] media: platform: mediatek: add seninf controller Shu-hsiang Yang
2024-10-09 12:50 ` AngeloGioacchino Del Regno
2024-10-11 1:36 ` CK Hu (胡俊光)
2024-10-11 2:38 ` CK Hu (胡俊光)
2024-10-22 4:16 ` CK Hu (胡俊光)
2024-10-28 1:55 ` CK Hu (胡俊光)
2024-10-09 11:15 ` [PATCH v1 03/10] media: platform: mediatek: add isp_7x seninf unit Shu-hsiang Yang
2024-10-14 9:25 ` CK Hu (胡俊光)
2024-10-18 8:54 ` CK Hu (胡俊光)
2024-10-28 1:27 ` CK Hu (胡俊光)
2024-10-28 1:30 ` CK Hu (胡俊光)
2024-11-06 5:58 ` CK Hu (胡俊光)
2024-11-18 9:23 ` CK Hu (胡俊光)
2024-11-18 9:28 ` CK Hu (胡俊光)
2024-11-19 1:46 ` CK Hu (胡俊光)
2024-11-19 1:50 ` CK Hu (胡俊光)
2024-11-20 6:35 ` CK Hu (胡俊光)
2024-10-09 11:15 ` [PATCH v1 04/10] media: platform: mediatek: add isp_7x cam-raw unit Shu-hsiang Yang
2024-10-10 12:49 ` AngeloGioacchino Del Regno
2024-10-11 2:23 ` CK Hu (胡俊光)
2024-10-11 2:55 ` CK Hu (胡俊光)
2024-10-11 5:40 ` CK Hu (胡俊光)
2024-10-11 6:03 ` CK Hu (胡俊光)
2024-10-22 5:43 ` Krzysztof Kozlowski
2024-10-22 6:14 ` CK Hu (胡俊光)
2024-10-22 6:30 ` CK Hu (胡俊光)
2024-10-23 10:05 ` CK Hu (胡俊光)
2024-10-25 6:30 ` CK Hu (胡俊光)
2024-10-28 6:48 ` CK Hu (胡俊光)
2024-11-04 2:35 ` CK Hu (胡俊光)
2024-11-04 8:04 ` CK Hu (胡俊光)
2024-11-05 3:01 ` CK Hu (胡俊光)
2024-10-09 11:15 ` [PATCH v1 05/10] media: platform: mediatek: add isp_7x camsys unit Shu-hsiang Yang
2024-10-14 9:40 ` CK Hu (胡俊光)
2024-10-16 3:43 ` CK Hu (胡俊光)
2024-11-19 5:56 ` CK Hu (胡俊光)
2024-10-22 5:44 ` Krzysztof Kozlowski
2024-10-22 6:48 ` CK Hu (胡俊光)
2024-10-29 2:35 ` CK Hu (胡俊光)
2024-10-29 6:47 ` CK Hu (胡俊光)
2024-10-29 7:03 ` CK Hu (胡俊光)
2024-10-30 3:20 ` CK Hu (胡俊光)
2024-10-30 5:43 ` CK Hu (胡俊光)
2024-11-04 6:08 ` CK Hu (胡俊光)
2024-11-04 13:06 ` [PATCH " Markus Elfring
2024-11-06 7:52 ` [PATCH v1 " CK Hu (胡俊光)
2024-11-13 7:24 ` CK Hu (胡俊光)
2024-11-20 6:10 ` CK Hu (胡俊光)
2024-10-09 11:15 ` [PATCH v1 06/10] media: platform: mediatek: add isp_7x utility Shu-hsiang Yang
2024-10-14 5:21 ` CK Hu (胡俊光)
2024-10-22 5:30 ` CK Hu (胡俊光)
2024-10-28 3:46 ` CK Hu (胡俊光)
2024-10-29 5:35 ` CK Hu (胡俊光)
2024-11-04 2:26 ` CK Hu (胡俊光)
2024-11-05 3:33 ` CK Hu (胡俊光)
2024-11-05 8:43 ` CK Hu (胡俊光)
2024-11-05 9:14 ` CK Hu (胡俊光)
2024-11-06 3:35 ` CK Hu (胡俊光)
2024-11-06 3:41 ` CK Hu (胡俊光)
2024-11-06 3:48 ` CK Hu (胡俊光)
2024-11-06 7:01 ` CK Hu (胡俊光)
2024-11-19 8:23 ` CK Hu (胡俊光)
2024-11-19 8:29 ` CK Hu (胡俊光)
2024-11-19 9:41 ` CK Hu (胡俊光)
2024-11-20 2:21 ` CK Hu (胡俊光)
2024-11-20 6:03 ` CK Hu (胡俊光)
2024-11-20 5:21 ` CK Hu (胡俊光)
2024-10-09 11:15 ` [PATCH v1 07/10] media: platform: mediatek: add isp_7x video ops Shu-hsiang Yang
2024-11-04 3:24 ` CK Hu (胡俊光)
2024-11-20 1:05 ` CK Hu (胡俊光) [this message]
2024-10-09 11:15 ` [PATCH v1 08/10] media: platform: mediatek: add isp_7x state ctrl Shu-hsiang Yang
2024-10-16 1:35 ` CK Hu (胡俊光)
2024-10-28 5:20 ` CK Hu (胡俊光)
2024-10-28 5:25 ` CK Hu (胡俊光)
2024-10-28 5:34 ` CK Hu (胡俊光)
2024-10-09 11:15 ` [PATCH v1 09/10] media: platform: mediatek: add isp_7x build config Shu-hsiang Yang
2024-10-16 1:56 ` CK Hu (胡俊光)
2024-10-09 11:15 ` [PATCH v1 10/10] uapi: linux: add mediatek isp_7x camsys user api Shu-hsiang Yang
2024-10-11 7:47 ` CK Hu (胡俊光)
2024-10-14 5:56 ` CK Hu (胡俊光)
2024-11-06 13:04 ` Laurent Pinchart
2024-11-18 9:58 ` Laurent Pinchart
2024-11-05 5:36 ` CK Hu (胡俊光)
2024-10-15 18:40 ` [PATCH v1 00/10] Add MediaTek ISP7 camera system driver Nicolas Dufresne
2024-11-18 10:00 ` Laurent Pinchart
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=558a6847ee699ecafdb015864cde2bb42babee33.camel@mediatek.com \
--to=ck.hu@mediatek.com \
--cc=Project_Global_Chrome_Upstream_Group@mediatek.com \
--cc=Shu-hsiang.Yang@mediatek.com \
--cc=Shun-Yi.Wang@mediatek.com \
--cc=Teddy.Chen@mediatek.com \
--cc=Yaya.Chang@mediatek.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=christian.koenig@amd.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=hidenorik@chromium.org \
--cc=krzk+dt@kernel.org \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=matthias.bgg@gmail.com \
--cc=mchehab@kernel.org \
--cc=robh@kernel.org \
--cc=sumit.semwal@linaro.org \
--cc=yunkec@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).