Re: [PATCH v7 4/5] media: platform: mediatek: isp: add mediatek ISP3.0 camsv
From: CK Hu (胡俊光) <hidden>
Date: 2024-11-25 08:14:29
Also in:
linux-devicetree, linux-media, linux-mediatek, lkml
Hi, Julien: On Thu, 2024-11-21 at 09:53 +0100, 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 <redacted> 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 <redacted> Signed-off-by: Florian Sylvestre <redacted> [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 void mtk_camsv30_update_buffers_add(struct mtk_cam_dev *cam_dev,
+ struct mtk_cam_dev_buffer *buf)
+{
+ mtk_camsv30_img0_write(cam_dev, CAMSV_IMGO_SV_BASE_ADDR, buf->daddr);
+}
+[snip]
+static void mtk_camsv30_fbc_inc(struct mtk_cam_dev *cam_dev)
+{
+ unsigned int fbc_val;
+
+ if (pm_runtime_resume_and_get(cam_dev->dev) < 0) {I think this pm_runtime_resume_and_get() is not necessary. mtk_camsv30_fbc_inc() is called only in mtk_cam_vb2_buf_queue(). But when buf_list is empty, mtk_camsv30_update_buffers_add() is called before this function. But mtk_camsv30_update_buffers_add() does not call pm_runtime_resume_and_get() and it works normally. So this function is not necessary to call pm_runtime_resume_and_get(). In other register setting function, please also check this pm function is necessary or not. Regards, CK
+ dev_err(cam_dev->dev, "failed to get pm_runtime\n"); + return; + } + + fbc_val = mtk_camsv30_read(cam_dev, CAMSV_IMGO_FBC); + fbc_val |= CAMSV_IMGO_FBC_RCNT_INC; + mtk_camsv30_write(cam_dev, CAMSV_IMGO_FBC, fbc_val); + fbc_val &= ~CAMSV_IMGO_FBC_RCNT_INC; + mtk_camsv30_write(cam_dev, CAMSV_IMGO_FBC, fbc_val); + + pm_runtime_put_autosuspend(cam_dev->dev); +} +