On Fri, 2024-11-22 at 10:44 +0100, Julien Stephan wrote: > External email : Please do not click links or open attachments until you have verified the sender or the content. > > > Le ven. 22 nov. 2024 à 10:19, CK Hu (胡俊光) <ck.hu@xxxxxxxxxxxx> a écrit : > > > > 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 <pnguyen@xxxxxxxxxxxx> > > > > > > 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@xxxxxxxxxxxx> > > > Signed-off-by: Florian Sylvestre <fsylvestre@xxxxxxxxxxxx> > > > [Paul Elder fix irq locking] > > > Signed-off-by: Paul Elder <paul.elder@xxxxxxxxxxxxxxxx> > > > Co-developed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > > > Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > > > Co-developed-by: Julien Stephan <jstephan@xxxxxxxxxxxx> > > > Signed-off-by: Julien Stephan <jstephan@xxxxxxxxxxxx> > > > --- > > > > [snip] > > > > > +static void mtk_cam_vb2_buf_queue(struct vb2_buffer *vb) > > > +{ > > > + struct mtk_cam_dev *cam = vb2_get_drv_priv(vb->vb2_queue); > > > + struct mtk_cam_dev_buffer *buf = to_mtk_cam_dev_buffer(vb); > > > + unsigned long flags; > > > + > > > + /* Add the buffer into the tracking list */ > > > + spin_lock_irqsave(&cam->buf_list_lock, flags); > > > + if (list_empty(&cam->buf_list)) > > > + (*cam->hw_functions->mtk_cam_update_buffers_add)(cam, buf); > > > + > > > + list_add_tail(&buf->list, &cam->buf_list); > > > + (*cam->hw_functions->mtk_cam_fbc_inc)(cam); > > > > I think fbc_inc should together with update_buffers_add. > > After update_buffers_add then fbc_inc. > > So squash fbc_inc into update_buffers_add and drop fbc_inc function. > > > > No, this is not true. > mtk_cam_update_buffers_add is used to indicate which buffer should be > used for dma write. This is the first entry in the buf list. > mtk_cam_fbc_inc is used to increase the number of available user space buffers. > > If the buffer list is not empty and user space calls buf_queue again, > we need to call mtk_cam_fbc_inc to increase the number of available > user buffers, but we don't want to change the buffer for DMA write. > > mtk_camsv30_update_buffers_add is called on irq to update the address > to the next buffer (if available). I think current design is OK. I just think it could have more flexible design. For example, reduce frame rate from 30 fps to 15 fps. And this is a time sequence to reduce frame rate: t = -5 ms, set buf1 address and fbc increase. (hardware index = 0, software index = 1) t = 0 ms, t = 33 ms, buf1 is done, do not set next buffer. (hardware index = 1, software index = 1) t = 67 ms, set buf2 addres and fbc increase. (hardware index = 1, software index = 2) t = 100 ms, buf2 is done, (hardware index = 2, software idex = 2) If want to keep the 30 fps, when t = 33ms, set buf2 address and fbc increase. If you want to keep current design, that's OK for me because now has no requirement for such advanced control. But I have a new question, in the time sequence I list, does it has interrupt when t = 0 (the first vblank) ? If t = 0 has no interrupt, I think t = 67 also has no interrupt and my design would not work. It t = 0 has interrupt, I think software should think this buffer is not done. > > Maybe the name mtk_camsv30_update_buffers_add is confusing then? > What do you think about: > - mtk_camsv30_update_buffers_add -> mtk_camsv30_update_buffers_address mtk_camsv30_update_buffers_address is better. > - mtk_cam_fbc_inc -> mtk_camsv30_buffer_add mtk_cam_fbc_inc is better, it show counter increase. Regards, CK > > Cheers > Julien > > > Regards, > > CK > > > > > + spin_unlock_irqrestore(&cam->buf_list_lock, flags); > > > +} > > > + > > > > > > > ************* MEDIATEK Confidentiality Notice ******************** > > The information contained in this e-mail message (including any > > attachments) may be confidential, proprietary, privileged, or otherwise > > exempt from disclosure under applicable laws. It is intended to be > > conveyed only to the designated recipient(s). Any use, dissemination, > > distribution, printing, retaining or copying of this e-mail (including its > > attachments) by unintended recipient(s) is strictly prohibited and may > > be unlawful. If you are not an intended recipient of this e-mail, or believe > > that you have received this e-mail in error, please notify the sender > > immediately (by replying to this e-mail), delete any and all copies of > > this e-mail (including any attachments) from your system, and do not > > disclose the content of this e-mail to any other person. Thank you!