Re: [PATCH v1 05/10] media: platform: mediatek: add isp_7x camsys unit
flat view
From: CK Hu (胡俊光) <hidden>
Date: 2024-10-29 07:03:26
Also in:
dri-devel, linux-arm-kernel, linux-media, linux-mediatek, lkml
Hi, Shu-hsiang: On Wed, 2024-10-09 at 19:15 +0800, Shu-hsiang Yang wrote:
Introduces the top media device driver for the MediaTek ISP7X CAMSYS. The driver maintains the camera system, including sub-device management, DMA operations, and integration with the V4L2 framework. It handles request stream data, buffer management, and MediaTek-specific features, and pipeline management, streaming control, error handling mechanism. Additionally, it aggregates sub-drivers for the camera interface, raw and yuv pipelines. Signed-off-by: Shu-hsiang Yang <redacted> ---
[snip]
quoted hunk ↗ jump to hunk
+struct mtk_cam_device { + struct device *dev; + + struct v4l2_device v4l2_dev; + struct v4l2_async_notifier notifier; + struct media_device media_dev; + void __iomem *base; + + struct mtk_scp *scp; + struct device *smem_dev; + phandle rproc_phandle; + struct rproc *rproc_handle; + + unsigned int composer_cnt; + + unsigned int num_seninf_devices; + unsigned int num_raw_devices; + unsigned int num_larb_devices; + + /* raw_pipe controller subdev */ + struct mtk_raw raw; + struct mutex queue_lock; /* protect queue request */ + + unsigned int max_stream_num; + unsigned int streaming_ctx; + unsigned int streaming_pipe; + struct mtk_cam_ctx *ctxs; + + /* request related */ + struct list_head pending_job_list; + spinlock_t pending_job_lock; /* protect pending_job_list */ + struct list_head running_job_list; + unsigned int running_job_count; + spinlock_t running_job_lock; /* protect running_job_list */ + + /* standard v4l2 buffer control */ + struct list_head dma_pending; + spinlock_t dma_pending_lock; /* protect dma_pending_list */ + struct list_head dma_processing; + spinlock_t dma_processing_lock; /* protect dma_processing_list and dma_processing_count */ + unsigned int dma_processing_count;
I would like scp-related variable has the scp prefix. struct list_head scp_dma_processing; spinlock_t scp_dma_processing_lock; unsigned int scp_dma_processing_count; So it's easy to understand that scp_dma_processing_count's max value is 2. One buffer is currently doing dma, and another one is waiting for dma. Both buffer are queued in scp. Regards, CK
quoted hunk ↗ jump to hunk
+ + struct mtk_cam_debug_fs *debug_fs; + struct workqueue_struct *debug_wq; + struct workqueue_struct *debug_exception_wq; + wait_queue_head_t debug_exception_waitq; +}; +