summaryrefslogtreecommitdiff
path: root/isp/omap3isp-priv.h
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2011-07-25 14:18:11 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2011-09-04 15:38:58 +0200
commit7250ca2bc92d75af37d1bb3ff796d6fd7394bba7 (patch)
tree45a0663433916145c81f96991bd618f51fd4c3e8 /isp/omap3isp-priv.h
parent9bc3d4c9a76886f62899365aca3a65d123395994 (diff)
omap3isp: Add transparent buffer pools support
Buffers pools can be inserted in a pipeline between a video capture device and a video output device. They will automatically relay buffers from the capture device to the output device in a transparent way. One use case of buffer pools is to work around hardware issues. When the CCDC is directly connected to the preview engine, any ESD-induce noise on the HS or VS signals will make the preview engine loose sync, is it only relies on line counts. Introducing a buffer pool between the CCDC and preview engine work around the issue. This patch only implements buffer pool creation during pipeline build. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'isp/omap3isp-priv.h')
-rw-r--r--isp/omap3isp-priv.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/isp/omap3isp-priv.h b/isp/omap3isp-priv.h
index b4d2114..9706ba8 100644
--- a/isp/omap3isp-priv.h
+++ b/isp/omap3isp-priv.h
@@ -40,6 +40,7 @@ struct omap3_isp_pad {
enum omap3_isp_entity_type {
OMAP3_ISP_ENTITY_ENTITY,
+ OMAP3_ISP_ENTITY_POOL,
OMAP3_ISP_ENTITY_VIDEO,
};
@@ -82,14 +83,34 @@ struct omap3_isp_video {
#define to_omap3_isp_video(e) container_of(e, struct omap3_isp_video, entity)
/*
+ * struct omap3_isp_pool - OMAP3 buffers pool
+ * @entity: OMAP3 entity
+ * @list: Pools list
+ * @input: Capture video device
+ * @output: Output video device
+ * @pool: Buffers pool
+ */
+struct omap3_isp_pool {
+ struct omap3_isp_entity entity;
+ struct list_entry list;
+ struct omap3_isp_video *input;
+ struct omap3_isp_video *output;
+ struct v4l2_buffers_pool *pool;
+};
+
+#define to_omap3_isp_pool(e) container_of(e, struct omap3_isp_pool, entity)
+
+/*
* struct omap3_isp_pipeline - OMAP3 pipeline
* @entitites: Entities in the pipeline
* @scaler: Whether scaling should be performed on the ISP or the sensor
+ * @pools: Pools in the pipeline
* @output: Video device at the output of the pipeline
*/
struct omap3_isp_pipeline {
struct list_entry entities;
enum omap3_isp_scaler scaler;
+ struct list_entry pools;
struct omap3_isp_video *output;
};