/* SPDX-License-Identifier: GPL-2.0-only */ /* * ispccp2.h * * TI OMAP3 ISP - CCP2 module * * Copyright (C) 2010 Nokia Corporation * Copyright (C) 2010 Texas Instruments, Inc. * * Contacts: Laurent Pinchart <laurent.pinchart@ideasonboard.com> * Sakari Ailus <sakari.ailus@iki.fi> */ #ifndef OMAP3_ISP_CCP2_H #define OMAP3_ISP_CCP2_H #include <linux/videodev2.h> struct isp_device; struct isp_csiphy; /* Sink and source ccp2 pads */ #define CCP2_PAD_SINK 0 #define CCP2_PAD_SOURCE 1 #define CCP2_PADS_NUM 2 /* CCP2 input media entity */ enum ccp2_input_entity { CCP2_INPUT_NONE, CCP2_INPUT_SENSOR, CCP2_INPUT_MEMORY, }; /* CCP2 output media entity */ enum ccp2_output_entity { CCP2_OUTPUT_NONE, CCP2_OUTPUT_CCDC, CCP2_OUTPUT_MEMORY, }; /* Logical channel configuration */ struct isp_interface_lcx_config { int crc; u32 data_start; u32 data_size; u32 format; }; /* Memory channel configuration */ struct isp_interface_mem_config { u32 dst_port; u32 vsize_count; u32 hsize_count; u32 src_ofst; u32 dst_ofst; }; /* CCP2 device */ struct isp_ccp2_device { struct v4l2_subdev subdev; struct v4l2_mbus_framefmt formats[CCP2_PADS_NUM]; struct media_pad pads[CCP2_PADS_NUM]; enum ccp2_input_entity input; enum ccp2_output_entity output; struct isp_interface_lcx_config if_cfg; struct isp_interface_mem_config mem_cfg; struct isp_video video_in; struct isp_csiphy *phy; struct regulator *vdds_csib; enum isp_pipeline_stream_state state; wait_queue_head_t wait; atomic_t stopping; }; /* Function declarations */ int omap3isp_ccp2_init(struct isp_device *isp); void omap3isp_ccp2_cleanup(struct isp_device *isp); int omap3isp_ccp2_register_entities(struct isp_ccp2_device *ccp2, struct v4l2_device *vdev); void omap3isp_ccp2_unregister_entities(struct isp_ccp2_device *ccp2); void omap3isp_ccp2_isr(struct isp_ccp2_device *ccp2); #endif /* OMAP3_ISP_CCP2_H */ |