From: "CK Hu (胡俊光)" <ck.hu@mediatek.com>
To: "mchehab@kernel.org" <mchehab@kernel.org>,
"conor+dt@kernel.org" <conor+dt@kernel.org>,
"robh@kernel.org" <robh@kernel.org>,
"Andy Hsieh (謝智皓)" <Andy.Hsieh@mediatek.com>,
"jstephan@baylibre.com" <jstephan@baylibre.com>,
"matthias.bgg@gmail.com" <matthias.bgg@gmail.com>,
"laurent.pinchart@ideasonboard.com"
<laurent.pinchart@ideasonboard.com>,
"krzk+dt@kernel.org" <krzk+dt@kernel.org>,
"angelogioacchino.delregno@collabora.com"
<angelogioacchino.delregno@collabora.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-mediatek@lists.infradead.org"
<linux-mediatek@lists.infradead.org>,
"linux-media@vger.kernel.org" <linux-media@vger.kernel.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"paul.elder@ideasonboard.com" <paul.elder@ideasonboard.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"fsylvestre@baylibre.com" <fsylvestre@baylibre.com>,
"pnguyen@baylibre.com" <pnguyen@baylibre.com>
Subject: Re: [PATCH v5 4/5] media: platform: mediatek: isp_30: add mediatek ISP3.0 camsv
Date: Thu, 18 Jul 2024 02:54:09 +0000 [thread overview]
Message-ID: <85c54f0b1b8bb5d9026c67109a3526fd95cc013b.camel@mediatek.com> (raw)
In-Reply-To: <20240704-add-mtk-isp-3-0-support-v5-4-bfccccc5ec21@baylibre.com>
Hi, Julien:
On Thu, 2024-07-04 at 15:36 +0200, Julien Stephan wrote:
>
> External email : Please do not click links or open attachments until you have verified the sender or the content.
> From: Phi-bang Nguyen <pnguyen@baylibre.com>
>
> This driver provides a path to bypass the SoC ISP so that image data
> coming from the SENINF can go directly into memory without any image
> processing. This allows the use of an external ISP.
>
> Signed-off-by: Phi-bang Nguyen <pnguyen@baylibre.com>
> Signed-off-by: Florian Sylvestre <fsylvestre@baylibre.com>
> [Paul Elder fix irq locking]
> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
> Co-developed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Co-developed-by: Julien Stephan <jstephan@baylibre.com>
> Signed-off-by: Julien Stephan <jstephan@baylibre.com>
> ---
[snip]
> +static int mtk_cam_vb2_start_streaming(struct vb2_queue *vq,
> + unsigned int count)
> +{
> +struct mtk_cam_dev *cam = vb2_get_drv_priv(vq);
> +struct mtk_cam_dev_buffer *buf;
> +struct mtk_cam_video_device *vdev =
> +vb2_queue_to_mtk_cam_video_device(vq);
> +struct device *dev = cam->dev;
> +const struct v4l2_pix_format_mplane *fmt = &vdev->format;
> +int ret;
> +unsigned long flags;
> +
> +if (pm_runtime_get_sync(dev) < 0) {
> +dev_err(dev, "failed to get pm_runtime\n");
> +pm_runtime_put_autosuspend(dev);
> +return -1;
> +}
> +
> +(*cam->hw_functions->mtk_cam_setup)(cam, fmt->width, fmt->height,
> +fmt->plane_fmt[0].bytesperline, vdev->fmtinfo->code);
> +
> +
> +/* Enable CMOS and VF */
> +mtk_cam_cmos_vf_enable(cam, true, true);
> +
> +mutex_lock(&cam->op_lock);
> +
> +ret = mtk_cam_verify_format(cam);
> +if (ret < 0)
> +goto fail_unlock;
> +
> +/* Start streaming of the whole pipeline now*/
> +if (!cam->pipeline.start_count) {
> +ret = media_pipeline_start(vdev->vdev.entity.pads,
> + &cam->pipeline);
> +if (ret) {
> +dev_err(dev, "failed to start pipeline:%d\n", ret);
> +goto fail_unlock;
> +}
> +}
> +
> +/* Media links are fixed after media_pipeline_start */
> +cam->stream_count++;
> +
> +cam->sequence = (unsigned int)-1;
> +
> +/* Stream on the sub-device */
> +ret = v4l2_subdev_call(&cam->subdev, video, s_stream, 1);
> +if (ret)
> +goto fail_no_stream;
> +
> +mutex_unlock(&cam->op_lock);
> +
> +/* Create dummy buffer */
> +cam->dummy_size = fmt->plane_fmt[0].sizeimage;
> +
> +cam->dummy.vaddr = dma_alloc_coherent(cam->dev, cam->dummy_size,
> + &cam->dummy.daddr, GFP_KERNEL);
Dummy buffer cost much in DRAM footprint. I think we can get rid of
this dummy buffer. If no buffer is queued from user space, call
mtk_camsv30_cmos_vf_hw_disable() to stop write data into DRAM. After
buffer is queued from user space, call mtk_camsv30_cmos_vf_hw_enable()
to start write data into DRAM.
Regards,
CK
> +if (!cam->dummy.vaddr) {
> +ret = -ENOMEM;
> +goto fail_no_buffer;
> +}
> +
> +/* update first buffer address */
> +
> +/* added the buffer into the tracking list */
> +spin_lock_irqsave(&cam->irqlock, flags);
> +if (list_empty(&cam->buf_list)) {
> +(*cam->hw_functions->mtk_cam_update_buffers_add)(cam, &cam->dummy);
> +cam->is_dummy_used = true;
> +} else {
> +buf = list_first_entry_or_null(&cam->buf_list,
> + struct mtk_cam_dev_buffer,
> + list);
> +(*cam->hw_functions->mtk_cam_update_buffers_add)(cam, buf);
> +cam->is_dummy_used = false;
> +}
> +spin_unlock_irqrestore(&cam->irqlock, flags);
> +
> +return 0;
> +
> +fail_no_buffer:
> +mutex_lock(&cam->op_lock);
> +v4l2_subdev_call(&cam->subdev, video, s_stream, 0);
> +fail_no_stream:
> +cam->stream_count--;
> +if (cam->stream_count == 0)
> +media_pipeline_stop(vdev->vdev.entity.pads);
> +fail_unlock:
> +mutex_unlock(&cam->op_lock);
> +mtk_cam_vb2_return_all_buffers(cam, VB2_BUF_STATE_QUEUED);
> +
> +return ret;
> +}
> +
next prev parent reply other threads:[~2024-07-18 2:54 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-04 13:36 [PATCH v5 0/5] Add Mediatek ISP3.0 Julien Stephan
2024-07-04 13:36 ` [PATCH v5 1/5] dt-bindings: media: add mediatek ISP3.0 sensor interface Julien Stephan
2024-07-04 16:26 ` Conor Dooley
2024-07-05 7:50 ` Julien Stephan
2024-07-05 9:23 ` Conor Dooley
2024-07-05 9:35 ` Julien Stephan
2024-07-04 13:36 ` [PATCH v5 2/5] dt-bindings: media: add mediatek ISP3.0 camsv Julien Stephan
2024-07-04 16:29 ` Conor Dooley
2024-07-04 22:51 ` Laurent Pinchart
2024-07-04 13:36 ` [PATCH v5 3/5] media: platform: mediatek: isp_30: add mediatek ISP3.0 sensor interface Julien Stephan
2024-07-18 2:36 ` CK Hu (胡俊光)
2024-07-18 2:44 ` CK Hu (胡俊光)
2024-07-29 12:46 ` Julien Stephan
2024-07-30 2:11 ` CK Hu (胡俊光)
2024-07-04 13:36 ` [PATCH v5 4/5] media: platform: mediatek: isp_30: add mediatek ISP3.0 camsv Julien Stephan
2024-07-18 2:54 ` CK Hu (胡俊光) [this message]
2024-07-29 13:40 ` Julien Stephan
2024-07-29 14:14 ` Laurent Pinchart
2024-07-30 2:39 ` CK Hu (胡俊光)
2024-07-18 2:59 ` CK Hu (胡俊光)
2024-07-18 3:26 ` CK Hu (胡俊光)
2024-07-18 3:32 ` CK Hu (胡俊光)
2024-07-30 7:25 ` Markus Elfring
2024-07-30 7:46 ` Markus Elfring
2024-07-04 13:36 ` [PATCH v5 5/5] arm64: dts: mediatek: mt8365: Add support for camera Julien Stephan
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=85c54f0b1b8bb5d9026c67109a3526fd95cc013b.camel@mediatek.com \
--to=ck.hu@mediatek.com \
--cc=Andy.Hsieh@mediatek.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=fsylvestre@baylibre.com \
--cc=jstephan@baylibre.com \
--cc=krzk+dt@kernel.org \
--cc=laurent.pinchart@ideasonboard.com \
--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=paul.elder@ideasonboard.com \
--cc=pnguyen@baylibre.com \
--cc=robh@kernel.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