1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * ispccp2.h 4 * 5 * TI OMAP3 ISP - CCP2 module 6 * 7 * Copyright (C) 2010 Nokia Corporation 8 * Copyright (C) 2010 Texas Instruments, Inc. 9 * 10 * Contacts: Laurent Pinchart <laurent.pinchart@ideasonboard.com> 11 * Sakari Ailus <sakari.ailus@iki.fi> 12 */ 13 14 #ifndef OMAP3_ISP_CCP2_H 15 #define OMAP3_ISP_CCP2_H 16 17 #include <linux/videodev2.h> 18 19 struct isp_device; 20 struct isp_csiphy; 21 22 /* Sink and source ccp2 pads */ 23 #define CCP2_PAD_SINK 0 24 #define CCP2_PAD_SOURCE 1 25 #define CCP2_PADS_NUM 2 26 27 /* CCP2 input media entity */ 28 enum ccp2_input_entity { 29 CCP2_INPUT_NONE, 30 CCP2_INPUT_SENSOR, 31 CCP2_INPUT_MEMORY, 32 }; 33 34 /* CCP2 output media entity */ 35 enum ccp2_output_entity { 36 CCP2_OUTPUT_NONE, 37 CCP2_OUTPUT_CCDC, 38 CCP2_OUTPUT_MEMORY, 39 }; 40 41 42 /* Logical channel configuration */ 43 struct isp_interface_lcx_config { 44 int crc; 45 u32 data_start; 46 u32 data_size; 47 u32 format; 48 }; 49 50 /* Memory channel configuration */ 51 struct isp_interface_mem_config { 52 u32 dst_port; 53 u32 vsize_count; 54 u32 hsize_count; 55 u32 src_ofst; 56 u32 dst_ofst; 57 }; 58 59 /* CCP2 device */ 60 struct isp_ccp2_device { 61 struct v4l2_subdev subdev; 62 struct v4l2_mbus_framefmt formats[CCP2_PADS_NUM]; 63 struct media_pad pads[CCP2_PADS_NUM]; 64 65 enum ccp2_input_entity input; 66 enum ccp2_output_entity output; 67 struct isp_interface_lcx_config if_cfg; 68 struct isp_interface_mem_config mem_cfg; 69 struct isp_video video_in; 70 struct isp_csiphy *phy; 71 struct regulator *vdds_csib; 72 enum isp_pipeline_stream_state state; 73 wait_queue_head_t wait; 74 atomic_t stopping; 75 }; 76 77 /* Function declarations */ 78 int omap3isp_ccp2_init(struct isp_device *isp); 79 void omap3isp_ccp2_cleanup(struct isp_device *isp); 80 int omap3isp_ccp2_register_entities(struct isp_ccp2_device *ccp2, 81 struct v4l2_device *vdev); 82 void omap3isp_ccp2_unregister_entities(struct isp_ccp2_device *ccp2); 83 void omap3isp_ccp2_isr(struct isp_ccp2_device *ccp2); 84 85 #endif /* OMAP3_ISP_CCP2_H */ 86