From 7250ca2bc92d75af37d1bb3ff796d6fd7394bba7 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Mon, 25 Jul 2011 14:18:11 +0200 Subject: 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 --- isp/omap3isp-priv.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'isp/omap3isp-priv.h') 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, }; @@ -81,15 +82,35 @@ 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; }; -- cgit v1.2.3