1/* 2 * ispccp2.h 3 * 4 * TI OMAP3 ISP - CCP2 module 5 * 6 * Copyright (C) 2010 Nokia Corporation 7 * Copyright (C) 2010 Texas Instruments, Inc. 8 * 9 * Contacts: Laurent Pinchart <laurent.pinchart@ideasonboard.com> 10 * Sakari Ailus <sakari.ailus@iki.fi> 11 * 12 * This program is free software; you can redistribute it and/or modify 13 * it under the terms of the GNU General Public License version 2 as 14 * published by the Free Software Foundation. 15 * 16 * This program is distributed in the hope that it will be useful, but 17 * WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 19 * General Public License for more details. 20 * 21 * You should have received a copy of the GNU General Public License 22 * along with this program; if not, write to the Free Software 23 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 24 * 02110-1301 USA 25 */ 26 27#ifndef OMAP3_ISP_CCP2_H 28#define OMAP3_ISP_CCP2_H 29 30#include <linux/videodev2.h> 31 32struct isp_device; 33struct isp_csiphy; 34 35/* Sink and source ccp2 pads */ 36#define CCP2_PAD_SINK 0 37#define CCP2_PAD_SOURCE 1 38#define CCP2_PADS_NUM 2 39 40/* CCP2 input media entity */ 41enum ccp2_input_entity { 42 CCP2_INPUT_NONE, 43 CCP2_INPUT_SENSOR, 44 CCP2_INPUT_MEMORY, 45}; 46 47/* CCP2 output media entity */ 48enum ccp2_output_entity { 49 CCP2_OUTPUT_NONE, 50 CCP2_OUTPUT_CCDC, 51 CCP2_OUTPUT_MEMORY, 52}; 53 54 55/* Logical channel configuration */ 56struct isp_interface_lcx_config { 57 int crc; 58 u32 data_start; 59 u32 data_size; 60 u32 format; 61}; 62 63/* Memory channel configuration */ 64struct isp_interface_mem_config { 65 u32 dst_port; 66 u32 vsize_count; 67 u32 hsize_count; 68 u32 src_ofst; 69 u32 dst_ofst; 70}; 71 72/* CCP2 device */ 73struct isp_ccp2_device { 74 struct v4l2_subdev subdev; 75 struct v4l2_mbus_framefmt formats[CCP2_PADS_NUM]; 76 struct media_pad pads[CCP2_PADS_NUM]; 77 78 enum ccp2_input_entity input; 79 enum ccp2_output_entity output; 80 struct isp_interface_lcx_config if_cfg; 81 struct isp_interface_mem_config mem_cfg; 82 struct isp_video video_in; 83 struct isp_csiphy *phy; 84 struct regulator *vdds_csib; 85 enum isp_pipeline_stream_state state; 86 wait_queue_head_t wait; 87 atomic_t stopping; 88}; 89 90/* Function declarations */ 91int omap3isp_ccp2_init(struct isp_device *isp); 92void omap3isp_ccp2_cleanup(struct isp_device *isp); 93int omap3isp_ccp2_register_entities(struct isp_ccp2_device *ccp2, 94 struct v4l2_device *vdev); 95void omap3isp_ccp2_unregister_entities(struct isp_ccp2_device *ccp2); 96void omap3isp_ccp2_isr(struct isp_ccp2_device *ccp2); 97 98#endif /* OMAP3_ISP_CCP2_H */ 99