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