1#ifndef MSM_CAM_ISPIF_H 2#define MSM_CAM_ISPIF_H 3 4#define CSID_VERSION_V20 0x02000011 5#define CSID_VERSION_V22 0x02001000 6#define CSID_VERSION_V30 0x30000000 7#define CSID_VERSION_V3 0x30000000 8 9enum msm_ispif_vfe_intf { 10 VFE0, 11 VFE1, 12 VFE_MAX 13}; 14#define VFE0_MASK (1 << VFE0) 15#define VFE1_MASK (1 << VFE1) 16 17enum msm_ispif_intftype { 18 PIX0, 19 RDI0, 20 PIX1, 21 RDI1, 22 RDI2, 23 INTF_MAX 24}; 25#define MAX_PARAM_ENTRIES (INTF_MAX * 2) 26#define MAX_CID_CH 8 27 28#define PIX0_MASK (1 << PIX0) 29#define PIX1_MASK (1 << PIX1) 30#define RDI0_MASK (1 << RDI0) 31#define RDI1_MASK (1 << RDI1) 32#define RDI2_MASK (1 << RDI2) 33 34 35enum msm_ispif_vc { 36 VC0, 37 VC1, 38 VC2, 39 VC3, 40 VC_MAX 41}; 42 43enum msm_ispif_cid { 44 CID0, 45 CID1, 46 CID2, 47 CID3, 48 CID4, 49 CID5, 50 CID6, 51 CID7, 52 CID8, 53 CID9, 54 CID10, 55 CID11, 56 CID12, 57 CID13, 58 CID14, 59 CID15, 60 CID_MAX 61}; 62 63enum msm_ispif_csid { 64 CSID0, 65 CSID1, 66 CSID2, 67 CSID3, 68 CSID_MAX 69}; 70 71struct msm_ispif_params_entry { 72 enum msm_ispif_vfe_intf vfe_intf; 73 enum msm_ispif_intftype intftype; 74 int num_cids; 75 enum msm_ispif_cid cids[3]; 76 enum msm_ispif_csid csid; 77 int crop_enable; 78 uint16_t crop_start_pixel; 79 uint16_t crop_end_pixel; 80}; 81 82struct msm_ispif_param_data { 83 uint32_t num; 84 struct msm_ispif_params_entry entries[MAX_PARAM_ENTRIES]; 85}; 86 87struct msm_isp_info { 88 uint32_t max_resolution; 89 uint32_t id; 90 uint32_t ver; 91}; 92 93struct msm_ispif_vfe_info { 94 int num_vfe; 95 struct msm_isp_info info[VFE_MAX]; 96}; 97 98enum ispif_cfg_type_t { 99 ISPIF_CLK_ENABLE, 100 ISPIF_CLK_DISABLE, 101 ISPIF_INIT, 102 ISPIF_CFG, 103 ISPIF_START_FRAME_BOUNDARY, 104 ISPIF_STOP_FRAME_BOUNDARY, 105 ISPIF_STOP_IMMEDIATELY, 106 ISPIF_RELEASE, 107 ISPIF_ENABLE_REG_DUMP, 108 ISPIF_SET_VFE_INFO, 109}; 110 111struct ispif_cfg_data { 112 enum ispif_cfg_type_t cfg_type; 113 union { 114 int reg_dump; /* ISPIF_ENABLE_REG_DUMP */ 115 uint32_t csid_version; /* ISPIF_INIT */ 116 struct msm_ispif_vfe_info vfe_info; /* ISPIF_SET_VFE_INFO */ 117 struct msm_ispif_param_data params; /* CFG, START, STOP */ 118 }; 119}; 120 121#define VIDIOC_MSM_ISPIF_CFG \ 122 _IOWR('V', BASE_VIDIOC_PRIVATE, struct ispif_cfg_data) 123 124#endif /* MSM_CAM_ISPIF_H */ 125